Chapitre 9 : Introduction aux scripts batch

:

Définition Commande echo Redirection Commentaires CLS Pause Variables et Paramètres Commande GOTO Commande IF Commande FOR Appel d’un batch à partir d’un autre batch

Cours Réseaux – Chapitre 9 : Introduction aux scripts batch.

bat". . chaque nouvelle ligne du fichier correspondant à une nouvelle commande. Un fichier Batch contient simplement une suite de commandes que vous pourriez taper sous l'invite (prompt) du DOS. Cours Réseaux – Chapitre 9 : Introduction aux scripts batch. Si vous devez les utiliser (par exemple : c:\documents and settings\all users\Menu démarrer). Notepad suffit amplement comme éditeur pour écrire des batch.Définition : Un fichier Batch (par lot) est un fichier texte contenant des commandes MS-DOS. Une exception pourtant : les caractères accentués passent mal avec Notepad. et possédant le suffixe ". il faut passer par EDIT (sous DOS).

il apparaît à l’écran sous une forme un peu spéciale : il affiche d’abord la commande comme si vous l’aviez tapée vous-même sous DOS. on utilise « ECHO » sans autre paramètre. et s’exécute ensuite. ECHO est utilisé pour faire sortir tous types de données : par défaut le texte est envoyé à l’écran. Pour arriver à cela. puisque l’écho est désactivé via la commande «echo off». en ce compris la première ligne. puis son résultat. Cours Réseaux – Chapitre 9 : Introduction aux scripts batch. rien de plus simple puisqu’il vous suffit d’entrer : Echo Bonjour Remarquez l'absence de guillemets Si l’on veut afficher l’état de l’écho (actif / non actif). En réalité. 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 « @ » . dans un fichier etc… Si vous souhaitez par exemple afficher « Bonjour » à l’écran. mais vous pouvez l’envoyer sur l’imprimante. Si vous souhaitez simplement afficher le résultat de la commande. la commande « @echo off » placée en début du batch permet de désactiver l’écho. . vous pouvez utiliser la commande «echo off «qui désactive l’écho. cette dernière est-elle justement affichée en haut de l’écran ? Et bien tout simplement car la commande s’affiche d’abord. Pourquoi. il va falloir trouver un moyen de masquer la ligne affichant la commande avant son exécution. Ce dernier n’est pas réactivé tant que la commande inverse « echo on » n’est pas rencontrée. C’est en effet par « echo » que la fonction d’affichage avant exécution est appelée.Commande ECHO : Lorsque vous exécutez le batch.

le résultat d’une commande est envoyé à l’écran. Soit en faisant un overwrite sur un fichier existant (>) soit en ajout à un fichier existant (>>). il permet d'"écrire" le résultat de commande vers rien du tout. c’est-à-dire. . Utilisé avec ">" et ">>". De la même façon : <f : utilise le fichier f comme entrée. Exemple : Echo Je suis ici > c:\ici.txt Echo Tu es ici >> c:\ici.txt La redirection vers "nul" : "Nul" représente un périphérique virtuel inexistant. en clair. 2>f : redirige la sortie d’erreur dans f cmd1 | cmd2 : tube ou pipe : la sortie de la commande 1 est envoyée en entrée à la commande 2. de les masquer. Les symboles de redirection > et >> : Ils permettent de rediriger le résultat vers un fichier. Les filtres : Ce sont des commandes qui peuvent recevoir en entrée le résultat d’autres commandes : More Sort Find Cours Réseaux – Chapitre 9 : Introduction aux scripts batch.Redirection Par défaut.

laissant le temps à l’utilisateur de visualiser le résultat d’une commande. Cours Réseaux – Chapitre 9 : Introduction aux scripts batch. Pause permet de laisser des données à l’écran tant que l’utilisateur ne presse pas une touche. Commande CLS pour Clear The Screen – effacer l’écran. L’exécution est ainsi interrompue.Les Commentaires : Pour introduire un commentaire. un message d’avertissement. utilisez l’instruction REM. puis entrez votre texte. . un texte d’information. etc.

Pour créer ou modifier une variable. .opérateurs arithmétiques << >> .attribution &= ^= |= <<= >>= . L'évaluation de l'expression est assez simple et prend en charge les opérations suivantes dans l'ordre décroissant de préséance : () . USERNAME est une variable d’environnement prédéfinie qui contient le nom de l’utilisateur connecté : Echo Bonjour cher %USERNAME% L’entrée de “set” en ligne de commande rend toutes les varirables d’environnement. Exemple : Set jj=lundi Set jj Echo le cours aura lieu tous les %jj% Pour détruire une variable d’environnement.opérateurs unaires */% .OU au niveau du bit = *= /= %= += -= .Les Variables : La commande «set» est utilisée pour créer.groupement !~.opérateurs arithmétiques +. L’affectation de variables numériques se fait par l’option /a Exemple : Set /a 3+8 L'option /A spécifie que la chaîne à droite du signe égal est une expression numérique qui est évaluée. . modifier. L’utilisation d’une variable se fait par l’intermédiaire du double % encadrant. il suffit de faire suivre la commande set du nom de la variable à détruire et du signe égal.OU exclusif au niveau du bit | . afficher et détruire les variables. avec le nom de la variable et un signe égal.décalage logique & .ET au niveau du bit ^ .séparateur d'expression Cours Réseaux – Chapitre 9 : Introduction aux scripts batch. il faut utiliser « set ».

grâce à la commande SHIFT : SHIFT [/n] Si les extensions de commandes sont activées. Comme tout programme. Il est possible de « décaler » le contenu de ces variables pour exploiter les autres paramètres reçus. %4 en %3. Concrètement. il peut recevoir des paramètres. Cours Réseaux – Chapitre 9 : Introduction aux scripts batch. et laisserait %0 et %1 intacts. Par exemple : SHIFT /2 décalerait %3 en %2. où n est compris entre 0 et 8. . s’il y a plus. etc. On appelle paramètre tous les arguments passés à un programme ou une commande.Les paramètres : Votre batch est assimilé à un programme. La variable %0 correspond quant à elle au chemin du batch. Et le paramètre %* contient tous les arguments entrés à la ligne de commande sauf le nom du fichier batch. un batch peut recevoir des paramètres entré au clavier via les variables de %1 à %9 dans le même ordre. la commande SHIFT prend en charge le commutateur /n qui lui indique de commencer le décalage au énième argument.

Commande GOTO : Cette commande permet de gérer le flux à travers un même script. Exemples : Commande 1 Commande 2 Label BONJOUR Commande 3 Commande 4 Commande 5 Goto BONJOUR @echo off :Start echo Hello. C’est donc une commande de terminaison de script. Attention : boucle sans fin Si l’arrivée est placée après le départ. puisque si l’on se replace dans le cadre d’un batch les commandes entre les deux sont évitées. World ! Goto Start Le label :EOF Il représente la fin du script. on a réalisé un « saut » dans le programme. La commande GOTO fonctionne avec un label :LABEL associé. . Cours Réseaux – Chapitre 9 : Introduction aux scripts batch.

la valeur des variables vient remplacer leur écriture. Par compte. on va être conduit à comparer le contenu de la variable d'environnement paramètre n°1 avec le texte "/AIDE". s'il y a des guillemets.différent de LSS . If "<condition>"=="<valeur>" <action> Il est important de : Toujours encadrer la condition et la valeur à tester par des guillemets. mais n'oubliez pas de les encadrer par des guillemets. De veiller à utiliser.Commande IF : If condition (commande) If condition (commande) Else (autre commande) Plusieurs commandes peuvent être exécutées si elles sont mises entre parenthèses. le double signe égal (== au lieu de =) Vous pouvez bien sur comparer des variables avec des valeurs ou comparer des variables ensembles.égal à NEQ . IF ERRORLEVEL exécute le reste de la ligne si ERRORLEVEL est égal ou supérieur à la valeur spécifiée. un texte sera affiché à l'écran. .inférieur à Cours Réseaux – Chapitre 9 : Introduction aux scripts batch. MS-DOS génère une erreur car il ne peut comparer un terme qui n'existe pas. Si ceux-ci sont identiques. lors d'un test. Attention à la différence majuscules/minuscule. Exemple : Dir /* If errorlevel 1 echo Dir invalide IF EXIST Fichier Permet de tester l’existence d’un fichier ou d’un dossier : If not exist test l’abscence… IF relationnel : If /i valeur1 relop valeur2 commande Il permet de comparer deux valeurs : Relop peut être : EQU . MS-DOS "comprend" qu'il fait une comparaison avec une variable vide. Exemple : If "%1"=="/AIDE" ECHO Ce texte sera affiché Ici. Les commandes retournent un code d’erreur supérieur à 0 en cas d’erreur. et si une variable est nulle. Pourquoi ? Parce qu'à l'exécution.

supérieur à GEQ . .LEQ .inférieur ou égal à GTR .supérieur ou égal à Cours Réseaux – Chapitre 9 : Introduction aux scripts batch.

Caractères génériques autorisés. Dans un script. l’itérateur est de la forme %%a. Voyons les différents cas : • FOR %variable IN (ensemble) DO commande [paramètres] : Exemple : @echo off for %%i in (1 2 3 4) Do Echo C'est le nombre %%I %%i est utilisé seulement en tant que nom de variable. L’option « /d » permet de faire la même chose sur des dossiers. Un autre intérêt de cette commande est que les éléments de la liste peuvent être des noms de fichiers. Commande à exécuter pour chaque fichier. . %x n’est pas égal à %X.Boucles avec FOR For %variable (=itérateur) in (ensemble) do commande [paramètres] %variable (ensemble) commande paramètres Spécifie un paramètre remplaçable par une seule lettre. Cette variable prend alors toutes les valeurs de la liste spécifiée entre les parenthèses : dans notre cas. 2. Dans notre cas. il faut spécifier le chemin exact. Les valeurs constituant la liste doivent être séparées entre elles par des espaces. l’itérateur est de la forme %a. la commande qui suit immédiatement est exécutée avec la valeur prise par la variable %%i. variable d’itération. Liste des paramètres ou des options pour la commande spécifiée. En ligne de commande. des virgules. ou des pointsvirgules. et 4. • FOR /D %variable IN (ensemble) DO commande [paramètres] For permet d’itérer des fichiers. Vous pouvez donc afficher à l'écran plusieurs fichiers à la fois avec un seule commande qui est TYPE : Exemple : @echo off FOR %%I IN (File1. Exemple : for /d %%i in (%SystemRoot%\system*) do echo %%I Cours Réseaux – Chapitre 9 : Introduction aux scripts batch. 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.txt File2. %%i prend donc successivement les valeurs 1. 3.txt) DO TYPE %%I Le répertoire courant est scanné pour trouver les fichiers. Ensuite. Pour un autre. Ensemble (de fichiers). De plus.

Ceci provoquera l'allocation de noms de variables supplémentaires.pas.-1..1) do @echo %%i • FOR /F ["options"] %variable IN (ensemble-fichiers) DO commande [paramètres] FOR /F ["options"] %variable IN ("chaîne") DO commande [paramètres] FOR /F ["options"] %variable IN ('commande') DO commande [paramètres] ou.m-n . séparées par des délimiteurs.lst : FOR /F %%I IN (dest.spécifie un ensemble de délimiteurs.” Le fichier (dans l’exemple dest.bat) do echo %%i • FOR /L %variable IN (début. redemarrage du serveur en cours. Les mots-clés sont : eol=c .lst) DO net send %%I “Attention. Chaque ligne est disséquée en parties.• FOR /R [[lecteur:]chemin] %variable IN (ensemble) DO commande [paramètres] L’option « /r » permet d’itérer une arborescence Exemple : For /r c:\ %%i in (*.…). Si le dernier caractère de la chaîne tokens= est une Cours Réseaux – Chapitre 9 : Introduction aux scripts batch. et attribuées successivement à chaque variable (%%i.fin) DO commande [paramètres] Exemple : @echo off For /l %%i in (5. Ceci remplace l'ensemble de délimiteurs par défaut qui sont l'espace et la tabulation. si l'options usebackq est utilisée : FOR /F ["options"] %variable IN (ensemble-fichiers) DO commande [paramètres] FOR /F ["options"] %variable IN ('chaîne') DO commande [paramètres] FOR /F ["options"] %variable IN (`commande`) DO commande [paramètres] Cette dernière option (/f) est la plus importante. La forme m-n est une étendue spécifiant les parties allant de m à n. %%j.. delims=xxx .spécifie un caractère de commentaire de fin de ligne (un seul) skip=n .spécifie le nombre de lignes à ignorer en début de fichier. Elle permet d’itérer une ligne de test Exemple : Le code suivant envoie un message avec net send en lisant les IP des destinataires enregistrées une par ligne dans le fichier dest.lst) est ouvert et lu et analysé ligne à ligne.spécifie les parties de chaque ligne devant être transmises au corps de FOR à chaque itération.y. tokens=x. .

parcourt les répertoires listés dans la variable d'environnement PATH à la recherche de %I et étend en lettre de lecteur du premier trouvé.3.chemin étendu contenant uniquement des noms courts %~aI .10.173.IP. alors une variable supplémentaire est allouée et reçoit le texte restant dans la ligne suivant la dernière partie analysée.2.F017D Hmaster. on tapera dans un batch : @echo off echo Liste des utilisateurs (d’apres data.173.étend %I en nom de chemin complet avec noms courts uniquement %~dp$PATH:i .F017C GDM.Utilisateur.étend %I en nom de fichier uniquement %~xI .F200 Pour effectuer la liste des utilisateurs (premier champ) du fichier data.113. tokens=1 delims=.txt contenant les lignes de code ci-dessus." %%a in (data. pour effectuer un ping sur toutes les IP contenues dans le même fichier Cours Réseaux – Chapitre 9 : Introduction aux scripts batch.113.173.173.étend %I en nom de fichier et extension uniquement .étend %I en chemin d'accès uniquement %~nI .étend %I en lettre de lecteur uniquement %~pI .ID Rabusier.étend %I en extension de fichier uniquement %~sI .113.étend %I en taille du fichier %~$PATH:I .parcourt les répertoires de la variable d'environnement PATH et étend %I en nom du premier fichier reconnu trouvé.Domaine.Ecole2.F100 Nobody.étend %I en supprimant les guillemets (") %~fI .astérisque.étend %I en DIR comme ligne en sortie Exemple : Soit le fichier de données suivant : .Ecole.10.5.étend %I en lettre de lecteur et chemin d'accès uniquement .étend %I en nom de chemin d'accès reconnu %~dI . %~ftzaI .étend %I en date/heure du fichier %~zI .spécifie que la nouvelle sémantique est en place.Ecole.10.txt) : for /f "eol=. usebackq . . Si le nom de la variable d'environnement n'est pas défini ou que le fichier n'est pas trouvé par la recherche. lorsqu'une chaîne entre guillemets inversés est exécutée en tant que commande et une chaîne entre guillemets simples est une chaîne de commande littérale et permet l'utilisation de guillemets doubles pour citer des noms de fichiers.étend %I en attributs du fichier %~tI .10.Ecole2. Avec la syntaxe optionnelle suivante : %~I .txt) do echo %%a De même.10.113. alors ce modificateur étend en chaîne vide Vous pouvez combiner les modificateurs pour obtenir des résultats composés : %~dpI %~nxI %~fsI .

csv Cours Réseaux – Chapitre 9 : Introduction aux scripts batch.txt) do call mac." %%a in (data.(champ n°2) : @echo off echo Ping en cours : for /f "eol=.bat %%i Avec mac. . tokens=2 delims=.%macadr% >> c:\Resultat\adresse_mac.txt) do ping %%a Et pour récupérer l’adresse MAC d’une liste de pcs : REM Appel d'un batch pour tous les pcs de liste_pc.txt. for /f %%i in (c:\Donnees\liste_pc.bat : REM Mac Adresse REM On pointe la ligne avec Adresse MAC @echo off set macadr=0 for /f "delims== tokens=2" %%i in ('nbtstat -a %1^|find "Adresse MAC"') do set macadr=%%i echo %1.

Mais. . il faut utiliser la commande call nom_du_fichier.bat Cours Réseaux – Chapitre 9 : Introduction aux scripts batch.Appel d’un batch à partir d’un autre : Il suffit d’entrer le nom du batch qu’on voudrait appeler pour lancer son application. de cette manière. Pour avoir le retour vers le job appelant. le batch appelé ne rend pas le contrôle au batch appelant.

Sign up to vote on this title
UsefulNot useful