Les batch
Les batchs sont des "programmes" qui contiennent en fait une succession de commandes individuelles.
Ils permettent d'enchaîner des commandes simples mais aussi de prendre des décisions simples, de lancer des traitements adaptés à des conditions spéciales ou des traitements répétitifs.
Le langage de commande en batch ou en programmes shell ou powershell permet aussi d'utiliser des commandes spécifiques aux objets gérés comme les utilisateurs, le système de gestion LDAP (AD-DS Windows) la messagerie Linux etc. ...
Vous trouverez ici des nouvelles commandes mais aussi des exemples plus ou moins complexes et l'un ou l'autre exercice.
Pour suivre ce cours, il est impératif d'avoir vu les commandes en ligne du chapitre précédent.
Exemple de Batch
cd c:/FTP mkdir pub/private mkdir pub/public mkdir common/ mkdir Users/ mkdir Users/toto mkdir Users/titi touch home.txt echo Bienvenue sur le site de " > home.txt copy home.txt Users/toto/welcome.html copy home.txt Users/titi/welcome.html echo toto >> Users/toto/welcome.html echo titi >> Users/titi/welcome.html
Plusieurs commandes s'enchaînes afin d'exécuter un traitement pour parvenir à un résultat, ici, la création de l'arborescence du répertoire FTP et l'ajout du fichier welcome.html sur chaque compte.
Commandes spécifiques aux Batchs
Voici une liste des commandes spécifiquement utilisées dans les batch. Voir le détail et des exemples plus loin dans le cours.
Commande | Description |
---|---|
IF | Effectue un traitement conditionnel dans un fichier de commandes. |
SET | Affiche, définit ou supprime des variables d'environnement Windows. |
ECHO | Affiche des messages ou active/désactive l'affichage des commandes. |
FOR | Exécute une commande sur chaque fichier d'un ensemble de fichiers. |
GOTO | Indique l'exécution d'un fichier de commandes pour une ligne identifiée par une étiquette. |
CALL | Demande l'exécution d'un autre batch avant de reprendre la sucession des commandes. |
PAUSE | Interrompt l'exécution d'un fichier de commandes et affiche un message. |
REM | Insère un commentaire dans un fichier de commandes. |
SHIFT | Modifier la position des paramètres remplaçables dans un fichier de commandes. |
SORT | Trier les entrées. |
(*) Commandes importantes
Les autres commandes du langage sont évidemment utilisables dans les batchs mais parfois, leur comportement change un peu : autre format de sortie, paramètre spéciaux, etc.
Les variables
Il est possible de définir des variables locales dans la fenêtre commande ou dans un batch afin de simplifier le travail.
Les variables sont définies à l'aide de la commande SET qui sert aussi à effectuer des calculs et à saisir des données au clavier.
Portée des variables
En DOS, une variable définie dans un batch est valable pour tout le batch, sans frontière (ce n'est pas le cas dans la programmation normale).
Définition
La commande SET permet de définir une variable ; Attention, pas d'espace entre le symbole = et le contenu !!! :
SET maVariable =contenu de ma variable
Utilisation
On utilise une variable en encadrant le nom de la variable avec un symbole % : %maVariable% Lors de l'utilisation des variable, l'interpréteur remplace le nom de la variable par son contenu dans la commande à exécuter.
Le batch suivant effectue le même travail qu'avant mais à l'aide de variables :
set ftp=c:/FTP set users=%ftp%/Users mkdir %ftp%/pub/private mkdir %ftp%/pub/public mkdir %ftp%/common/ mkdir %users%/toto mkdir %users%/titi set debut=bienvenue sur le site de echo %debut% toto >> %users%/toto/welcome.html echo %debut% titi >> %users%/titi/welcome.html
Utilisation avancée
Set permet aussi de saisir des caractères au clavier (/P) et d'effectuer des calculs (/A) :
@echo off rem ==== test.bat ===== SET /p unNombre=Saisir un nombre echo %unNombre% SET /a resultat=3 *(5 + %unNombre% ) echo %resultat%
Résultat :
D:\_temp\Batchs_test>test.bat Saisir un nombre123 123 384
Et voilà.
Les paramètres ou arguments
Il est possible de donner des arguments (ou paramètres) à un batch.
Soit le batch à qui lorsqu'on lui donne un nom, répond "bonjour xxx" avec xxx le nom donné.
Le batch contient :
set jour=date echo bonjour %1, nous somme le %jour%
- Il crée une variable avec la date du jour,
- prend la valeur contenue dans la variable automatique %1 et remplace "%1" par cette valeur dans la commande demandée.
- Puis, il remplace %date% par sa valeur
- Et exécute la commande echo.
Il est possible d'avoir jusqu'à 9 arguments, pas plus. Au delà, il faut utilise la commande shift pour décaler les arguments vers la gauche.
Le batch "bonjour.bat" suivant :
rem === debut du batch bonjour.bat =========== @echo off echo Bonjour cher(e) %1 shift echo et cher(e) %1 echo Bonne journée rem === fin du batch ===========
Appelé comme suit, affiche ...
>_ bonjour toto titi Bonjour cher(e) toto et cher(e) titi Bonne journée
Remarquer @echo off qui bloc l'affichage intermédiaire des commandes avant leur exécution et le @ qui bloque l'affichage de "echo off" elle-même.