Les fichiers de commande ("batch")

Transcription

Les fichiers de commande ("batch")
S. Laporte
LMS
LES FICHIERS DE COMMANDE .BAT
Batch veut dire "lot" en anglais. Un fichier batch est un programme écrit en mode texte et qui a
l'extension ".bat". Il permet de lancer une ou plusieurs commandes à la suite l'une de l'autre, et ainsi
d'automatiser des tâches fastidieuses
Le programme qui exécute les commandes (cmd.exe) lit séquentiellement chaque ligne, donc
chaque commande du fichier et exécute ces commandes au fur et à mesure.
Lorsque toutes ces commandes sont épuisées, le système d’exploitation reprend la main.
Une fois constitués, ces fichiers sont considérés comme des commandes par DOS. Pour les lancer il
est inutile de préciser leur extension.
L’exécution de ces fichiers peut s’interrompre à tout moment par CTRL-C. DOS affiche alors un
message demandant de confirmer l’arrêt de l’exécution du fichier Batch.
Un fichier de commande peut en contenir un autre : ils sont « emboîtables ». Toutefois, il faut
savoir qu’en fin d’exécution du fichier de commande emboîté, la main est redonnée au système
d’exploitation et non au fichier de commande initial.
Pour écrire un fichier batch, utilisez un éditeur de texte. Notepad de Windows fera parfaitement
l'affaire, à condition de ne pas taper de caractères accentués. Sinon, utilisez le programme EDIT du
langage de commande.
Exemple de fichier de commande
Voilà le contenu du fichier exemple1.bat, enregistré à la racine de C :
date
time
dir /W
Ce programme affiche la date et l’heure (et propose de les changer) puis affiche le contenu du
répertoire courant sur 5 colonnes.
Pour appeler ce programme, il suffit de l’appeler en indiquant son nom à la suite de l’invite de
commande (le fichier .bat doit se trouver dans le chemin courant)
C:\> exemple1
Lance l’exécution du programme
LE PASSAGE DE PARAMETRE
Les commandes incluses dans le fichier peuvent être paramétrées, c’est à dire que les objets de ces
commandes sont des paramètres formels.
Les paramètres réels seront fournis lors du lancement du fichier batch :
C :\>nom-fichier-batch param1 param2 ...
Exemple :
C :\>affich rouge noir
Nom du fichier batch
sans l’extension
1er paramètre
2ème paramètre
1
S. Laporte
LMS
Lors de l’appel du fichier, les paramètres réels seront substitués aux paramètres formels à mesure de
l’exécution des différentes commandes.
Les paramètres formels s’écrivent %n, où n est un chiffre de 0 à 9 représentant la position du paramètre dans
la liste des paramètres réels fournie lors du lancement du fichier de commande.
%0 représente le nom du fichier de commande lui-même.
%1 représente la valeur du 1er paramètre.
%n représente la valeur du nième paramètre.
Exemple :
Echo %1
rouge
de l’exemple précédent, donne comme résultat :
Exemple :
Supposons que la commande MOVE n’existe pas. Construire un fichier batch se nommant bouger.bat
permettant de déplacer un fichier (à l’aide de COPY et DEL).
Le premier paramètre représentera le fichier qu’on souhaite déplacer, le second paramètre représentera le
chemin où on veut le placer.
Exemple d’appel :
bouger texte.doc c:\doc\francais
On trouvera dans le fichier bouger.bat les commandes suivantes :
COPY %1 %2
DEL %1
Il y a, à l’exécution, substitution des paramètres réels (texte.doc et c:\doc\francais) et les commandes
finalement exécutées seront :
COPY texte.doc c:\doc\francais
DEL texte.doc
LES INSTRUCTIONS SPECIFIQUES AUX FICHIERS DE COMMANDE
Ces instructions sont reconnues par cmd.exe au même titre que toute autre instruction interne (telle que dir
ou cd). Nous allons présenter les principales :
ECHO REM PAUSE GOTO IF
L’instruction ECHO
MS-DOS affiche sur l’écran les commandes des fichiers batch avant de les exécuter.
L’instruction ECHO dirige cette visualisation.
ECHO OFF
ECHO ON
ECHO
ECHO <msg>
inhibe cette visualisation
rétablit cette visualisation (mode normal)
sans argument, délivre à l’écran le mode actuel (on ou off)
dirige le contenu du message vers l’écran
Exemple : ECHO Début du fichier batch
L’instruction REM
REM <msg> agit comme ECHO sauf que REM n’est pris en compte que dans le mode ECHO ON.
En fait, ECHO s’utilise pour renseigner l’opérateur et REM pour documenter le fichier de commande =
commentaire.
2
S. Laporte
LMS
L’instruction PAUSE
L’instruction PAUSE suspend l’exécution du fichier de commande et affiche "Presser une touche pour
continuer... "
PAUSE sert pour donner à l’opérateur :
• le temps de réfléchir
• la possibilité de changer une disquette
• la possibilité d’interrompre l’exécution par CTRL-C
Le Label et GOTO
Le label est une chaîne de 1 à 8 caractères alphanumériques. Il apparaît en position d’argument dans
l’instruction GOTO.
Utilisé comme étiquette sur une ligne de commande, il doit être précédé de deux points :
Exemple :
GOTO FIN
..............
:FIN
..............
Si le label n’est pas défini en position d’étiquette lors d’un GOTO, l’exécution du fichier est stoppée. Le
message « label not found » s’affiche.
L’instruction IF
L’instruction conditionnelle se présente sous la forme
IF [NOT] <condition> <commande>
Attention, un if ne peut être suivi que d’une seule commande (ou plusieurs concaténées par &)
Tester l’égalité : ==
IF %1 == STOP GOTO FIN
Tester l’existence d’un fichier : EXIST
IF NOT EXIST c:\langage\pascal\%1.pas GOTO ERROR
A partir de WNT, il est possible d’utiliser ELSE avec IF, seulement si le ELSE est sur la même ligne que le
IF.
Exemple : Créer un fichier de commande affichant un message pour dire si le fichier passé en
paramètre est présent ou non dans le répertoire courant.
Exemple d’appel : trouve toto.xls
On trouvera dans le fichier trouve.bat les commands suivantes :
IF NOT EXIST %1 GOTO error ELSE
ECHO Ce fichier est présent
GOTO fin
:error
ECHO Ce fichier est absent
:fin
LES VARIABLES D’ENVIRONNEMENT
Certaines variables sont prédéfinies par Windows (via Autoexec.bat ou par le panneau de configuration). Ce
sont des variables d’environnement persistantes (c'est-à-dire qu’elles sont toujours utilisables).
3
S. Laporte
LMS
Il existe de nombreuses variables d’environnement. Il est possible d’en ajouter. En voilà quelques unes :
CD : chemin en cours
WINDIR : contient le chemin du répertoire Windows
TEMP : chemin du répertoire temporaire de Windows
DATE : la date du jour
TIME : l’heure courante
OS : système d’exploitation installé
USERNAME : nom de l’utilisateur sur le réseau
COMPUTERNAME : nom de l’ordinateur sur le réseau
ERRORLEVEL : numéro d’erreur (0 s’il n’y en a pas)
PATH : c’est une variable d’environnement très importante (voir son explication ci-après) …
Pour afficher toutes les variables d’environnement disponibles, il suffit de taper la commande SET.
Les variables d’environnement dynamiques (qui bougent) telles que DATE, TIME ou CD n’apparaissent pas
avec SET
LA COMMANDE SET
Cette commande, sans paramètre, permet comme on l’a vu de lister les variables d’environnement.
Mais on peut utiliser cette commande pour créer ses propres variables d’environnement dans un fichier batch.
Syntaxe
SET variable = valeur
SET dossier = « C:\Mes Documents\Travail »
SET nom = %1%
La variable nom prend la valeur du 1° paramètre
Pour supprimer une variable, il suffit de la faire suivre du signe = tout seul
SET dossier =
Supprime la variable dossier
LA COMMANDE PATH
Pour qu’un fichier batch (de même qu’un .exe ou qu’un .com) puisse être exécuté, il faut qu’il se trouve :
- soit dans le répertoire en cours
- soit dans un des chemins enregistrés dans la variable PATH.
Si ce n’est pas le cas un message d’erreur apparaît, du genre « xxxx n'est pas reconnu en tant que commande
interne ou externe, un programme exécutable ou un fichier de commandes. »
La variable d’environnement PATH contient tous les répertoires que le système explore si on lui
demande d’exécuter un fichier .bat, .exe ou .com n’existant pas dans le répertoire courant. La variable
PATH est constituée d’une liste de chemins de répertoires séparés par des ;
Ainsi, si vous tapez monbatch, l’interpréteur de commande va d’abord le chercher dans le répertoire courant.
S’il n’y est pas, il cherche dans le premier répertoire contenu dans le path, puis dans le second.. jusqu’à ce
que le fichier soit trouvé (auquel cas il est exécuté) ou bien que tous les répertoires du PATH aient été
explorés. Dans ce cas, le message d’erreur apparaît.
Il est possible d’ajouter un chemin dans le path en utilisant la forme suivante :
PATH = %PATH%;c:\Alsi
Ici, on ajoute ;c:\Alsi à la variable PATH
4