0% ont trouvé ce document utile (0 vote)
77 vues87 pages

BATCH

Transféré par

anaisboutrel
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
77 vues87 pages

BATCH

Transféré par

anaisboutrel
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

LE BATCH

Christian DUPONT AFPA Campus LILLE-LOMME 1


SOMMAIRE

● Introduction 3
● Création premier BATCH 5
LES BASES DE LA PROGRAMMATION BATCH
● ECHO 9
● Commenter son code 13
● Afficher du texte à l'écran 15
● Les caractères spéciaux 19
● Effacer l'écran 20
● Faire une pause 21
● Variable et paramètre 24
● Saut, boucles 40
● Exécution conditionnelle – la commande IF 46
● Boucle avec FOR 56
● Redirection de sortie et écriture dans les fichiers 67
● Appel d'autre fichier BATCH 80
● Travail avec ERRORLEVEL 82
● CHOICE 85

Christian DUPONT AFPA Campus LILLE-LOMME 2


INTRODUCTION

● Basiquement, un fichier BATCH est :


– Un fichier texte contenant des commandes MS-
DOS,
– Il à comme extension de fichier .BAT ou .CMD
● La connaissance des commandes de bases MS-
DOS est nécessaire,
● L'utilité d'un fichier BATCH est de pouvoir
automatiser un certain nombres de lignes de
commandes.

Christian DUPONT AFPA Campus LILLE-LOMME 3


INTRODUCTION

● Pour éditer un fichier BATCH, un simple éditeur de texte


comme « NOTEPAD » suffit,
● Vous pouvez utiliser d'autre éditeur comme
« PowerBatch » ou « Notepad++ » par exemple,
● Le langage Batch n'est pas compilé, il est interprété par
[Link] ce qui rend plus lent l'exécution de
programmes batch par rapport à des applications écrites
directement en langage machine,
● Les fichiers Batch sont directement éditables, donc votre
code n'est pas "protégé" à la copie par d'autres
programmeurs.
Christian DUPONT AFPA Campus LILLE-LOMME 4
CRÉATION DU PREMIER BATCH

● Prenons le cas où vous souhaitez lister les fichiers


DLL dans le répertoire Windows, vous entreriez
sous DOS :

c: \CHEMIN>cd \ [ENTRÉE]
c: \>cd WINDOWS [ENTRÉE]
c: \>dir *.dll [ENTRÉE]

Christian DUPONT AFPA Campus LILLE-LOMME 5


CRÉATION DU PREMIER BATCH

● Il suffit de taper ces lignes de commandes dans un


fichier texte.

● L'enregistrer avec l'extension .BAT ou .CMD

Christian DUPONT AFPA Campus LILLE-LOMME 6


CRÉATION DU PREMIER BATCH

● Exécuter le fichier que vous venez de créer.

Christian DUPONT AFPA Campus LILLE-LOMME 7


CRÉATION DU PREMIER BATCH

● Si la fenêtre se ferme automatiquement sans vous


laisser le temps de visualiser son résultat, rajoutez
la commande « PAUSE » à la fin de votre
BATCH.
● Même si vous ne comprenez pas encore cette
commande, sachez que celle-ci demande une
validation clavier avant de terminer le programme,
ce qui vous laissera le temps de visualiser le
contenu de la fenêtre ;-).

Christian DUPONT AFPA Campus LILLE-LOMME 8


LES BASES DE LA
PROGRAMMATION BATCH
« ECHO »
● Le terme « Echo » a plusieurs significations. Selon
qu’il est utilisé, on peut parler de commande de
sortie, propriété d’affichage ou commande de
désactivation ou d’activation. C’est une notion
simple mais très souvent utilisée dans la
programmation BATCH.
● Maintenant imaginez que vous souhaitez
simplement afficher le résultat de la commande. Il
va donc falloir trouver un moyen de masquer la
ligne affichant la commande avant son exécution.

Christian DUPONT AFPA Campus LILLE-LOMME 9


LES BASES DE LA
PROGRAMMATION BATCH
« ECHO »
● Si vous réécrivez votre BATCH en lui ajoutant à son
début « echo off », cela donne :

● Et si vous l’exécutez, vous aurez un résultat du style :

● Seul le résultat de la commande a été affiché à l'écran


Christian DUPONT AFPA Campus LILLE-LOMME 10
LES BASES DE LA
PROGRAMMATION BATCH
« ECHO »
● Dans votre BATCH, l’écho est désactivé lorsque
[Link] rencontre echo off. Ce dernier
n’est pas réactivé tant que la commande inverse :
echo on, n’est pas rencontrée.
● Un autre moyen pour désactiver l’écho est de faire
précéder la ligne dont seul le résultat doit être
affiché du signe « @ » .

Christian DUPONT AFPA Campus LILLE-LOMME 11


LES BASES DE LA
PROGRAMMATION BATCH
« ECHO »
● Ainsi, vous pourriez transformer le BATCH

● en

Christian DUPONT AFPA Campus LILLE-LOMME 12


LES BASES DE LA
PROGRAMMATION BATCH
Commenter son code
● Comme dans tout langage de programmation, il est
essentiel de commenter son code :
– Cela accroît la clarté du code et le rend
compréhensible par n’importe quel collaborateur,
– Cela vous permet vous-même de vous repérer dans
votre code si celui-ci est eu peu complexe,
– Cela facilite votre relecture si par exemple vous
n’avez pas travaillé sur un code depuis
longtemps.

Christian DUPONT AFPA Campus LILLE-LOMME 13


LES BASES DE LA
PROGRAMMATION BATCH
Commenter son code
● Pour introduire un commentaire, utilisez l’instruction
REM, puis entrez une ligne de texte, par exemple :

● La ligne précédée de REM ne sera pas exécutée, mais tout


de même affichée à l’écran si l’écho est activé. Dans tous
les cas, la présence de commentaires ne gène en aucun cas
l’exécution de votre code ; cela alourdit néanmoins
légèrement votre fichier.

Christian DUPONT AFPA Campus LILLE-LOMME 14


LES BASES DE LA
PROGRAMMATION BATCH
Afficher du texte à l'écran
● Il peut être utile, dans certains cas, d’afficher un
texte à l’écran, par exemple pour informer
l’utilisateur de ce que « fait » le BATCH.
● Vous utiliserez la commande « echo » . Encore
elle !
● Si vous souhaitez par exemple afficher
« Bonjour » à l’écran, rien de plus simple puisqu’il
vous suffit d’entrer :

Christian DUPONT AFPA Campus LILLE-LOMME 15


LES BASES DE LA
PROGRAMMATION BATCH
Afficher du texte à l'écran
● Voici un petit BATCH qui mêle commentaires,
messages à l’écran et commandes DOS :

Christian DUPONT AFPA Campus LILLE-LOMME 16


LES BASES DE LA
PROGRAMMATION BATCH
Afficher du texte à l'écran
● Afficher des lignes vides : attention, vous ne
pourrez pas afficher des lignes vides en entrant
juste « echo ».
● Par conséquent, il existe une « combine » pour
afficher une lignevide :
– il faut entrer « echo. »

Christian DUPONT AFPA Campus LILLE-LOMME 17


LES BASES DE LA
PROGRAMMATION BATCH
Afficher du texte à l'écran
● Exemple :

● Ce qui donne :

Christian DUPONT AFPA Campus LILLE-LOMME 18


LES BASES DE LA
PROGRAMMATION BATCH
Les caractères spéciaux
● S’il y a bien un point important sur lequel il faut
être vigilant, c’est bien sur celui des caractères
spéciaux.
● Ceux-ci désignent notamment tous les caractères
accentués de notre langue ainsi que les signes
« spéciaux » %,<,>, | (pipe), car ils correspondent
à des sigles bien précis qui pourraient entraîner de
multiples erreurs s’ils étaient insérés sans raison
particulière dans un BATCH.

Christian DUPONT AFPA Campus LILLE-LOMME 19


LES BASES DE LA
PROGRAMMATION BATCH
Effacer l'écran
● Pour effacer l’écran (du moins le texte de la
console DOS si vous travaillez sous Windows). Il
existe une commande bien connue par les habitués
du Basic :
– CLS, pour Clear The Screen – effacer l’écran.

Christian DUPONT AFPA Campus LILLE-LOMME 20


LES BASES DE LA
PROGRAMMATION BATCH
Faites une pause !
● Il existe une commande permettant de laisser des
données à l’écran tant que l’utilisateur ne presse
pas une touche.
● L’exécution est ainsi interrompue, laissant le
temps de visualiser le résultat d’une commande,
un texte d’information, un message
d’avertissement, etc.
● Il suffit pour cela d’entrer l’instruction « pause »
dans votre BATCH.

Christian DUPONT AFPA Campus LILLE-LOMME 21


LES BASES DE LA
PROGRAMMATION BATCH
Faites une pause !
● Si vous souhaitez simplement attendre l’appui
d’une touche sans afficher le message classique
généré par MS-DOS, il suffit d’entrer :

● Le rôle de « >nul » sera abordé ultérieurement.


– Comparez-le simplement à votre stade à un « trou
noir » supprimant tous les messages
normalement émis par la commande à sa gauche.

Christian DUPONT AFPA Campus LILLE-LOMME 22


Christian DUPONT AFPA Campus LILLE-LOMME 23
LES BASES DE LA
PROGRAMMATION BATCH
Variables et paramètres
● Comme dans tous langage de programmation, il
existe un moyen de stocker des informations dans
un emplacement de la mémoire de votre
ordinateur.
● A cet emplacement est associé un nom que vous
définissez, afin de manipuler facilement ces
données.

Christian DUPONT AFPA Campus LILLE-LOMME 24


LES BASES DE LA
PROGRAMMATION BATCH
Variables et paramètres
● Vous rencontrerez des variables sous plusieurs
formes :
– Lors de la lecture : c’est-à-dire lorsque vous
examinerez et utiliserez le contenu d’une
variable,
– Lors de l’écriture : c’est-à-dire lorsque vous
modifierez le contenu d’une variable.

Christian DUPONT AFPA Campus LILLE-LOMME 25


LES BASES DE LA
PROGRAMMATION BATCH
Variables et paramètres

Variables d’environnement
● Une « variable d’environnement » correspond au
nom du seul type de variable que l’on peut utiliser
pour stocker des données.
● Elle représente une valeur accessible n’importe où
et n'importe quand dans l'environnement DOS du
processus qui la pose.

Christian DUPONT AFPA Campus LILLE-LOMME 26


LES BASES DE LA
PROGRAMMATION BATCH
Variables et paramètres
● On peut simplifier en classant les variables
d’environnement en 2 catégories :
– Les variables d’environnement « persistantes » qui
sont définies dans Windows (via [Link]
ou le panneau de configuration) qui sont
accessibles à tous les processus,
– Les variables d’environnement « locales » que
vous définissez dans vos BATCH : la variable
sera uniquement accessible au processus qui
l’aura définie ainsi qu’à ses « enfants », c'est-à-
dire les processus qu’il créera éventuellement.

Christian DUPONT AFPA Campus LILLE-LOMME 27


LES BASES DE LA
PROGRAMMATION BATCH
Variables et paramètres

● Pour afficher les variables d’environnement


persistantes (c'est-à-dire, on le rappelle, celles qui
sont définies « avec Windows » et publiques à
tous les processus), tapez simplement dans l’invite
de commande la commande :
– set ce qui donne par exemple :

Christian DUPONT AFPA Campus LILLE-LOMME 28


LES BASES DE LA
PROGRAMMATION BATCH
Variables et paramètres

Christian DUPONT AFPA Campus LILLE-LOMME 29


LES BASES DE LA
PROGRAMMATION BATCH
Variables et paramètres
● Utilisez la commande SET, qui requiert la syntaxe
suivante :
– Set NomDeVariable=Valeur
● Exemple :
– Set reseaulocal=\\[Link]\applications

Christian DUPONT AFPA Campus LILLE-LOMME 30


LES BASES DE LA
PROGRAMMATION BATCH
Variables et paramètres
Lire et utiliser les variables
● Pour lire le contenu d’une variable, on l’encadre de deux « % ».
● Soit « nom » une variable contenant un nom à afficher. On pourrait
utiliser :
– Echo bonjour, %nom% !
● Si la variable « nom » contient une valeur, celle-ci remplace donc
dans le BATCH la chaîne « %nom% ». Si par exemple, cette
variable contient le texte « Mathieu », alors, l’interpréteur « verra »
la ligne suivante :
– Echo Bonjour, %nom% !
– ... et affichera à l’écran « Bonjour, Mathieu !».

Christian DUPONT AFPA Campus LILLE-LOMME 31


LES BASES DE LA
PROGRAMMATION BATCH
Variables et paramètres
● Cette variable peut-être insérée n’importe ou dans
votre BATCH, combinée à n’importe quelle
commande. Si la variable « rep » contient une
adresse du type « C:\DOSSIER1 », vous pourrez
l’utiliser avec d’autres commandes comme :

Christian DUPONT AFPA Campus LILLE-LOMME 32


LES BASES DE LA
PROGRAMMATION BATCH
Variables et paramètres
● Faites bien attention si la variable sur laquelle
vous travaillez est vide, cela génère des réactions
plutôt inattendues.

Christian DUPONT AFPA Campus LILLE-LOMME 33


LES BASES DE LA
PROGRAMMATION BATCH
Variables et paramètres

Suppression d’une variable


● Set NomDeVariable=

Christian DUPONT AFPA Campus LILLE-LOMME 34


LES BASES DE LA
PROGRAMMATION BATCH
Variables et paramètres
● un BATCH peut recevoir des paramètres directement
accessibles via les variables de %1 à %9.
● La variable %0 correspond quant à elle au chemin du
BATCH.
● Contrairement aux variables classiques, on observe 3
grosses différences :
– on ne peut pas les modifier,
– elles ne sont pas encadrées par 2 « % » (seulement
précédés d’un seul « % »),
– enfin, elles sont spécifiques pour chaque BATCH.

Christian DUPONT AFPA Campus LILLE-LOMME 35


LES BASES DE LA
PROGRAMMATION BATCH
Variables et paramètres
● Vous pouvez tester cela en créant le BATCH
suivant :

Christian DUPONT AFPA Campus LILLE-LOMME 36


LES BASES DE LA
PROGRAMMATION BATCH
Variables et paramètres
● Ce qui donne :

● Comme vous le constatez, rien n'apparaît à la


place des %1 %2 %3 et %4 : en effet, nous
n'avons pas envoyé de paramètre à l'application,
c'est donc normal.
Christian DUPONT AFPA Campus LILLE-LOMME 37
LES BASES DE LA
PROGRAMMATION BATCH
Variables et paramètres
● Envoyez maintenant 3 paramètres, par exemple
« /V » pour le premier paramètre, « [Link] »
pour le second, et « C:\ » pour le troisième.
● Sous DOS, vous pouvez lancer le fichier en le
faisant précéder de son adresse, puis en envoyant
les paramètres, par exemple :

Christian DUPONT AFPA Campus LILLE-LOMME 38


LES BASES DE LA
PROGRAMMATION BATCH
Variables et paramètres
● Ce qui donne :

Christian DUPONT AFPA Campus LILLE-LOMME 39


LES BASES DE LA
PROGRAMMATION BATCH
Saut, boucles
● En principe, les lignes de commande sont traitées
les unes après les autres dans un fichier BATCH.
● Toutefois, dans certains cas, on est obligé de
sauter des lignes pour reprendre le traitement à un
autre endroit du fichier ou bien répéter
indéfiniment un bloc de code.
● C'est dans ces cas-là que nous allons utiliser les
commandes de boucle.

Christian DUPONT AFPA Campus LILLE-LOMME 40


LES BASES DE LA
PROGRAMMATION BATCH
Saut, boucles

Notre première boucle


● Pour faire une boucle, il nous faut deux
commandes :
– La première est la commande Goto, (de l'anglais
Go To... qui signifie "aller à") qui, accompagnée
du nom du Label, indique à l'ordinateur, quand il
doit se rendre à l'étiquette du même nom.
– La seconde est un "Label", c'est-à-dire une
étiquette posée dans le programme à l'endroit ou
la boucle doit recommencer.

Christian DUPONT AFPA Campus LILLE-LOMME 41


LES BASES DE LA
PROGRAMMATION BATCH
Saut, boucles
● Un label se présente sous la forme :
– :NomDuLabel
● Le nom ne doit pas :
– dépasser 8 lettres
– Ne pas être composé d'espaces
– Par exemple
● :Debut

Christian DUPONT AFPA Campus LILLE-LOMME 42


LES BASES DE LA
PROGRAMMATION BATCH
Saut, boucles
● Un "Goto" se présente sous la forme de cette
commande suivie du nom du label, par exemple :
– Goto Debut

Christian DUPONT AFPA Campus LILLE-LOMME 43


LES BASES DE LA
PROGRAMMATION BATCH
Saut, boucles
● Allons–y pour une boucle infinie !
● Nous voulons afficher "Hello, World !" en boucle.

Christian DUPONT AFPA Campus LILLE-LOMME 44


LES BASES DE LA
PROGRAMMATION BATCH
Saut, boucles
● Dernières précisions sur les commandes de saut :
– Deux labels ne peuvent pas porter le même nom,
– Un « GOTO » pointant sur un label inexistant
génère une erreur lors de l’exécution.

Christian DUPONT AFPA Campus LILLE-LOMME 45


LES BASES DE LA
PROGRAMMATION BATCH
Exécution conditionnelle – la commande « IF »
● Voici une commande qui permet d'introduire des
conditions dans les fichiers BATCH.
● Syntaxe d'utilisation :
– If "<condition>"=="<valeur>" <action>
● Il est important de :
– Toujours encadrer la condition et la valeur à tester par
des guillemets,
– De veiller à utiliser, lors d'un test, le double signe égal
(== au lieu de =)
– Se rappeler que "<action>" représente une seule
commande à exécuter.
Christian DUPONT AFPA Campus LILLE-LOMME 46
LES BASES DE LA
PROGRAMMATION BATCH
Exécution conditionnelle – la commande « IF »
● Vous pouvez bien sur comparer des variables avec
des valeurs ou comparer des variables ensembles,
mais n'oubliez pas de les encadrer par des
guillemets.
● Exemple :
– If "%1"=="/AIDE" ECHO Ce texte sera affiche

Christian DUPONT AFPA Campus LILLE-LOMME 47


LES BASES DE LA
PROGRAMMATION BATCH
Exécution conditionnelle – la commande « IF »
● D’autres formes de IF sont utilisables.
● Par exemple :
– IF NOT Condition
● C'est en fait "l'inverse" de la commande IF.
● If not "%ScoreJoueur%"=="%ScoreMax%" echo
Peut mieux faire !
– IF EXIST Fichier
● Vérifie l'existence du fichier désigné.
● If exist c:\[Link] Copy [Link]
[Link]

Christian DUPONT AFPA Campus LILLE-LOMME 48


LES BASES DE LA
PROGRAMMATION BATCH
Exécution conditionnelle – la commande « IF »
– IF ERRORLEVEL
● Vérifie le numéro de message d'erreur.
● Des commandes MS-DOS renvoient un numéro
spécial au fichier BATCH en cas de problème ou
d'erreur, désigné par ERRORLEVEL.
● ERRORLEVEL vaut toujours 0 si aucune erreur ne
s'est produite.
● Exemple :
– If errorlevel 3 echo Vous avez annule FORMAT par
Ctrl+C !

Christian DUPONT AFPA Campus LILLE-LOMME 49


LES BASES DE LA
PROGRAMMATION BATCH
Exécution conditionnelle – la commande « IF »
● Utilisation avec la commande GOTO :
– Nous avons utilisé la commande IF pour introduire
des questions dans les fichiers Batch. Il serait
souhaitable maintenant d'utiliser plusieurs
commandes en fonction du résultat de la
question.
– Voilà comment nous allons procéder :

Christian DUPONT AFPA Campus LILLE-LOMME 50


LES BASES DE LA
PROGRAMMATION BATCH
Exécution conditionnelle – la commande « IF »

● Ainsi, si 1 est différent de 2, les commandes 1, 2 et


3 seront exécutées, sinon, la commande 3 sera
exécutée et les commandes 1 et 2 évitées.

Christian DUPONT AFPA Campus LILLE-LOMME 51


LES BASES DE LA
PROGRAMMATION BATCH
Exécution conditionnelle – la commande « IF »
● Autre exemple :

Christian DUPONT AFPA Campus LILLE-LOMME 52


LES BASES DE LA
PROGRAMMATION BATCH
Exécution conditionnelle – la commande « IF »
● Windows NT permet d’utiliser les opérateurs
suivants avec IF :
– EQU – égal à
– NEQ – différent de
– LSS – inférieur à
– LEQ – inférieur ou égal à
– GTR – supérieur à
– GEQ – supérieur ou égal à

Christian DUPONT AFPA Campus LILLE-LOMME 53


LES BASES DE LA
PROGRAMMATION BATCH
Exécution conditionnelle – la commande « IF »
● Par exemple, le BATCH suivant monte un disque
réseau uniquement si l’utilisateur est
l’administrateur :
– If /I ''%USERNAME%'' EQU ''Administrateur'' net
use H: \\WEB01\C$
● /I ignore la casse

Christian DUPONT AFPA Campus LILLE-LOMME 54


LES BASES DE LA
PROGRAMMATION BATCH
Exécution conditionnelle – la commande « IF »

Pseudo boucle :

● Avec set /a, la variable est à chaque fois


incrémentée. Tant que celle-ci est inférieure à 10,
« goto startfor » sera exécutée et la commande
répétée 10 fois.
Christian DUPONT AFPA Campus LILLE-LOMME 55
LES BASES DE LA
PROGRAMMATION BATCH
Boucle avec FOR
● Après avoir fait connaissance avec une technique
de la programmation des sauts inconditionnels
(Goto), en voici une autre.
● Nous allons créer un BATCH qui va afficher
successivement les chiffres 1 à 4.
● Écrivez le fichier BATCH suivant :

Christian DUPONT AFPA Campus LILLE-LOMME 56


LES BASES DE LA
PROGRAMMATION BATCH
Boucle avec FOR
● %%A est utilisé seulement en tant que nom de
variable.
● Cette variable prend alors toutes les valeurs de la
liste spécifiée entre les parenthèses.
● Les valeurs constituant la liste doivent être
séparées entre elles par des espaces, des virgules,
ou des points-virgules.
● Ensuite, la commande qui suit immédiatement est
exécutée avec la valeur prise par la variable %%A.

Christian DUPONT AFPA Campus LILLE-LOMME 57


LES BASES DE LA
PROGRAMMATION BATCH
Boucle avec FOR
● Dans notre cas, on verra à l'écran le message
« C'est le nombre » suivi de la valeur de la
variable à chaque exécution de ECHO.
● Ainsi il est possible d'exécuter une seule
commande pour plusieurs fichiers. Vous pouvez
donc afficher à l'écran plusieurs fichiers à la fois
avec un seule commande qui est « TYPE » :

Christian DUPONT AFPA Campus LILLE-LOMME 58


LES BASES DE LA
PROGRAMMATION BATCH
Boucle avec FOR

● Ce qui donne

Christian DUPONT AFPA Campus LILLE-LOMME 59


LES BASES DE LA
PROGRAMMATION BATCH
Boucle avec FOR
● Les valeurs peuvent être extraites d’un fichier, en
utilisant l’option « /F ».
● Par exemple, le code suivant envoie un message
avec « net send » en lisant les IP des destinataires
enregistrées une par ligne dans le fichier [Link] :

Christian DUPONT AFPA Campus LILLE-LOMME 60


LES BASES DE LA
PROGRAMMATION BATCH
Boucle avec FOR
● Vous pouvez extraire des valeurs depuis un fichier
texte composé de plusieurs champs, par exemple :

Christian DUPONT AFPA Campus LILLE-LOMME 61


LES BASES DE LA
PROGRAMMATION BATCH
Boucle avec FOR
● « FOR » mets pour cela à votre disposition
plusieurs options qui devront être mises entre
guillemets et séparées par des espaces :
– Eol=<valeur> : spécifie un caractère de fin de
ligne. Seul les chaînes situées avant ce caractère
seront traitées. On peut utiliser cette commande
pour exclure des commentaires comme les 3
premières lignes du fichier ci-dessus, qui
commencent par « ; ».

Christian DUPONT AFPA Campus LILLE-LOMME 62


LES BASES DE LA
PROGRAMMATION BATCH
Boucle avec FOR
– Delims=<valeur> : spécifie le délimiteur de champ.
Par défaut ce sont les espaces et les tabulations.
Dans notre exemple, le délimiteur de champ est
la virgule car les lignes utiles contiennent les
informations séparées par des virgules.
– Tokens=<valeur> : spécifie la ou les parties
séparées par Delims à extraire. Par exemple,
pour extraire le champ Domaine du fichier ci-
dessus, Tokens devra valoir 3 car c’est le
troisième champ présent.

Christian DUPONT AFPA Campus LILLE-LOMME 63


LES BASES DE LA
PROGRAMMATION BATCH
Boucle avec FOR
● Exemple :

● Ce qui donne :

Christian DUPONT AFPA Campus LILLE-LOMME 64


LES BASES DE LA
PROGRAMMATION BATCH
Boucle avec FOR
● On peut remplacer ''eol= ;'' par ''skip=n''
– Exclut les n premières lignes du fichier.
● Vous pouvez utiliser la syntaxe tokens=x,y,z.. qui
désigne LES éléments à sélectionner.
– Nous pourrions choisir d’écrire tokens=2,3 pour
sélectionner le second et le troisième champ.
● Mais l'on peut écrire token=2,*
– demande à extraire tout le reste de la ligne à partir
du champ précédent.

Christian DUPONT AFPA Campus LILLE-LOMME 65


LES BASES DE LA
PROGRAMMATION BATCH
Boucle avec FOR
● Autre exemple :

● Ce qui donne :

Christian DUPONT AFPA Campus LILLE-LOMME 66


LES BASES DE LA
PROGRAMMATION BATCH
Redirection de sortie et écriture dans les fichiers
● Vous pouvez lire et écrire dans des fichiers, à
l'aide de commandes BATCH.
● Nous allons utiliser les chevrons (">" ou "<")
comme caractères de redirection.

● Écrire dans des fichiers


– On utilise ici le chevron orienté vers la droite (>).

Christian DUPONT AFPA Campus LILLE-LOMME 67


LES BASES DE LA
PROGRAMMATION BATCH
Redirection de sortie et écriture dans les fichiers
● Écriture en mode "ajout" (Append)
● Ce mode permet d'ajouter des données sans
écraser celles qui étaient inscrites précédemment
dans le fichier.
● Nous allons utiliser 2 chevrons, orientés vers la
droite, qui pointent vers le nom de fichier à
utiliser :
– Echo Texte à écrire>>c:\[Link]
● Ainsi, tout le texte compris entre "Echo" et les
">>" sera écrit dans "c:\[Link]".
Christian DUPONT AFPA Campus LILLE-LOMME 68
LES BASES DE LA
PROGRAMMATION BATCH
Redirection de sortie et écriture dans les fichiers
● Si le fichier n'existe pas, il sera créé et les données
y seront inscrites sans générer d'interruptions ou
d'erreurs, sauf si le ou les répertoires le contenant
n'existent pas eux-mêmes,
● Le texte à inscrire sera ajouté à la fin du fichier,
● Une nouvelle ligne sera créée dans le fichier à
chaque fois que vous appellerez la commande.
● Exemple :
– echo bonjour %1 >> [Link]

Christian DUPONT AFPA Campus LILLE-LOMME 69


LES BASES DE LA
PROGRAMMATION BATCH
Redirection de sortie et écriture dans les fichiers
● Écriture en mode "écrasement" (Output)
● Contrairement au mode d'ajout, le mode
d'écrasement efface toutes les données inscrites
précédemment dans le fichier, puis inscrit la ligne
transmise.
● Nous allons utiliser 1 seul chevron orienté vers la
droite, qui pointe vers le nom de fichier à utiliser :
– Echo Texte à écrire>c:\[Link]

Christian DUPONT AFPA Campus LILLE-LOMME 70


LES BASES DE LA
PROGRAMMATION BATCH
Redirection de sortie et écriture dans les fichiers
● Comme précédemment, tout le texte compris entre
"Echo" et le ">" sera écrit dans "c:\[Link]".
● Si le fichier n'existe pas, il sera créé et les données
y seront inscrites sans générer d'interruptions ou
d'erreurs sauf si le ou les répertoires le contenant
n'existent eux-mêmes pas.
● Le contenu du fichier sera automatiquement
effacé. Toutes les données seront perdues et
remplacées par le texte entre "echo" et ">"

Christian DUPONT AFPA Campus LILLE-LOMME 71


LES BASES DE LA
PROGRAMMATION BATCH
Redirection de sortie et écriture dans les fichiers
● Par exemple, vous souhaitez sauvegarder le nom
d’utilisateur courant contenu dans
« %USERNAME »% dans un fichier :
– Echo %USERNAME%>%WINDIR \[Link]

Christian DUPONT AFPA Campus LILLE-LOMME 72


LES BASES DE LA
PROGRAMMATION BATCH
Redirection de sortie et écriture dans les fichiers

Écrire le résultat d'une commande dans des


fichiers
● Pour cela, vous n'avez qu'à supprimer « Echo », et
remplacer le texte à écrire dans le fichier par une
commande MS-DOS.
● Par exemple :
– dir c:\*.*>>c:\[Link]
● Le contenu du disque C:\ sera inscrit en mode
"rajout" dans le fichier [Link]

Christian DUPONT AFPA Campus LILLE-LOMME 73


LES BASES DE LA
PROGRAMMATION BATCH
Redirection de sortie et écriture dans les fichiers
● La redirection vers « nul »
● « Nul » représente un périphérique virtuel
inexistant. Utilisé avec « > » et « >> », il permet
d' « écrire » le résultat de commande vers rien du
tout, c’est-à-dire, en clair, de les masquer.
● La commande à gauche de « >nul » est exécutée
correctement, mais son résultat n’est pas affiché.
● Exemple :
– Pause > nul

Christian DUPONT AFPA Campus LILLE-LOMME 74


LES BASES DE LA
PROGRAMMATION BATCH
Redirection de sortie et écriture dans les fichiers
● Le texte normalement affiché par la fonction pause
(« Presser une touche pour continuer ») n'est pas
affiché, seule la fonction demeure (l'utilisateur doit
presser une touche pour que le déroulement du
programme continue).

Christian DUPONT AFPA Campus LILLE-LOMME 75


LES BASES DE LA
PROGRAMMATION BATCH
Redirection de sortie et écriture dans les fichiers
● Le symbole de redirection « | »
● Ce caractère de redirection, appelé « Pipe » permet
de rediriger la sortie d’une commande vers
l’entrée d’une autre.
● Prenons un exemple bien connu : en tapant
« DEL *.* »
● Un message de confirmation apparaît, demandant
l’appui sur la touche « o » (pour OUI) pour
continuer.

Christian DUPONT AFPA Campus LILLE-LOMME 76


LES BASES DE LA
PROGRAMMATION BATCH
Redirection de sortie et écriture dans les fichiers
● La commande suivante permet de résoudre ce
problème :
– Echo o|del*.*
● Dans notre cas, ce sera comme une « validation »
à la question « Pressez o pour continuer, n pour
annuler ».

Christian DUPONT AFPA Campus LILLE-LOMME 77


LES BASES DE LA
PROGRAMMATION BATCH
Redirection de sortie et écriture dans les fichiers
● Rediriger une entrée vers une commande : le
caractère « < »,
● Beaucoup de commandes nécessitent l’envoi de
caractère pour valider des messages ou répondre à
des questions. MS-DOS vous permet de répondre
à ces questions en lisant le texte à envoyer dans
des fichiers.

Christian DUPONT AFPA Campus LILLE-LOMME 78


LES BASES DE LA
PROGRAMMATION BATCH
Redirection de sortie et écriture dans les fichiers
● Par exemple : créez avec EDIT ou NOTEPAD un
fichier à la racine de C:\ nommé [Link].
● Inscrivez « 6/12/02 », puis sauvez votre fichier.
● Ouvrez ensuite une console DOS, placez vous à la
racine de C:\ si ce n’est pas déjà le cas, puis
entrez :
– DATE<[Link]
● Quelques secondes plus tard, la date actuelle aura
été changée en 6/12/02.

Christian DUPONT AFPA Campus LILLE-LOMME 79


LES BASES DE LA
PROGRAMMATION BATCH
Appel d'autres fichier BATCH
● La commande « CALL » permet d'appeler un
fichier BATCH à partir d'un autre fichier BATCH.
– Après avoir traité le fichier BATCH appelé, le
programme revient au premier fichier BATCH et
à l'endroit précis où le fichier BATCH a été
appelé.
● Appel sans « CALL »
– Vous pouvez appeler un fichier BATCH à partir d'un
autre en utilisant son nom. Le résultat est que le
BATCH appelé est traité, mais il est impossible de
revenir au BATCH de sortie précédemment traité.

Christian DUPONT AFPA Campus LILLE-LOMME 80


LES BASES DE LA
PROGRAMMATION BATCH
Appel d'autres fichier BATCH
● Appel d’exécutables Windows
– La commande START permet de lancer des
applications Windows depuis vos BATCH.
● Start /w [Link] : Lance [Link] ; en
attendant que son exécution soit terminée pour
continuer,
● Start /MAX [Link] : Lance [Link] en plein
écran.

Christian DUPONT AFPA Campus LILLE-LOMME 81


LES BASES DE LA
PROGRAMMATION BATCH
Travail avec ERRORLEVEL
● De nombreuses commandes MS-DOS revoient
une valeur de retour différente de 0 quand une
erreur se produit.
● Dans le fichier BATCH, elle peut-être consultée à
l'aide de la variable ERRORLEVEL.
● Cette valeur peut-être testée avec IF.
● Attention, il y a un léger point à surveiller :
– Si la valeur de retour est SUPERIEURE OU
EGALE au numéro indiqué la commande est
exécutée.
Christian DUPONT AFPA Campus LILLE-LOMME 82
LES BASES DE LA
PROGRAMMATION BATCH
Travail avec ERRORLEVEL
● Par conséquent, si vous avez plusieurs
ERRORLEVEL à tester, commencez toujours par
la plus grande, puis procédez par ordre
décroissant.
● Exemple :
– le fichier BATCH suivant formate une disquette
dans le lecteur A. Si une erreur se produit ou si le
processus est interrompu avec CTRL+C, le
fichier BATCH renvoie un message d'erreur.

Christian DUPONT AFPA Campus LILLE-LOMME 83


LES BASES DE LA
PROGRAMMATION BATCH
Travail avec ERRORLEVEL

Christian DUPONT AFPA Campus LILLE-LOMME 84


LES BASES DE LA
PROGRAMMATION BATCH
CHOICE
● La commande « CHOICE » va permettre
d'attendre que l'utilisateur fasse un choix dans le
menu.
● Elle est utile lors de création de menu sous MS-
DOS pour faire appel à des programmes ou
effectuer des tâches répétitives.
● CHOICE est utilisé avec /c:<caractères> pour
afficher et attendre la réponse

Christian DUPONT AFPA Campus LILLE-LOMME 85


LES BASES DE LA
PROGRAMMATION BATCH
CHOICE
● CHOICE /C:ABC
● Affiche :
● Pour afficher un texte précédent le choix, il suffit
de saisir directement le texte à la suite :

Christian DUPONT AFPA Campus LILLE-LOMME 86


LES BASES DE LA
PROGRAMMATION BATCH
CHOICE
● Exemple de menu :

Christian DUPONT AFPA Campus LILLE-LOMME 87

Vous aimerez peut-être aussi