Les instructions de contrôle
Les instructions de contrôle dans les fichiers shell sous Windows permettent de gérer la logique du script, comme les conditions, les boucles, ou encore les sauts d'exécution.
1. if
La commande if permet d'exécuter des commandes en fonction de conditions. Elle peut tester l'égalité entre des chaînes de caractères, comparer des nombres, ou vérifier des erreurs.
Syntaxe
Exemples
Comparer des chaînes de caractères :
@echo off set /p nom="Entrez votre nom : " if %nom%==Jean ( echo Bonjour Jean ! ) else ( echo Vous n'êtes pas Jean. )Comparer des nombres :
@echo off set /p age="Quel âge avez-vous ? " if %age% gtr 18 ( echo Vous êtes majeur. ) else ( echo Vous êtes mineur. )Tester l'existence d'un fichier :
@echo off if exist fichier.txt ( echo Le fichier existe. ) else ( echo Le fichier n'existe pas. )
2. for
La commande for permet de créer des boucles pour exécuter une commande sur plusieurs fichiers, dossiers ou éléments d'une liste.
Syntaxe
Exemples
Boucle sur des fichiers dans un répertoire :
@echo off for %%f in (*.txt) do ( echo Traitement du fichier %%f )Boucle sur une liste :
@echo off for %%x in (apple orange banana) do ( echo Fruit : %%x )
3. goto
La commande goto permet de sauter à une étiquette définie pour continuer l'exécution du script à cet endroit.
Syntaxe
Exemple
Utiliser
gotopour des sauts conditionnels :@echo off set /p choix="Voulez-vous continuer ? (o/n) : " if %choix%==o goto continuer if %choix%==n goto fin :continuer echo Continuons ! goto fin :fin echo Fin du script.
4. choice
La commande choice permet à l'utilisateur de choisir une option dans une liste.
Syntaxe
Exemple
Exemple d'utilisation de
choice:@echo off choice /c yn /m "Voulez-vous continuer ?" if %errorlevel%==1 echo Vous avez choisi Oui. if %errorlevel%==2 echo Vous avez choisi Non.
5. setlocal et endlocal
Les commandes setlocal et endlocal sont utilisées pour créer une zone où les variables locales sont définies.
Syntaxe
Exemple
6. call
La commande call permet d'exécuter un autre fichier shell ou une sous-routine dans le même fichier.
Syntaxe
Exemple
Appeler une sous-routine dans le même fichier :
@echo off call :sous_routine echo Retour à la routine principale goto fin :sous_routine echo Ceci est une sous-routine goto :eof :fin echo Fin du script.
7. exit
La commande exit permet de quitter le script shell.
Syntaxe
Exemples
Quitter avec un code d'erreur :
@echo off set /p age="Entrez votre âge : " if %age% lss 18 ( echo Vous êtes mineur. exit /b 1 ) echo Vous êtes majeur.
8. rem
La commande rem permet d’ajouter des commentaires dans un fichier shell. Ces commentaires ne sont pas exécutés.
Syntaxe
Exemple
Commandes de redirections
Les commandes de redirection en batch sous Windows sont des outils puissants permettant de rediriger l'entrée, la sortie et les erreurs des commandes.
Redirections de sortie standard
Rediriger la sortie vers un fichier (> et >>)
>: Écrase le contenu du fichier (ou le crée s'il n'existe pas) avec la sortie d'une commande.>>: Ajoute la sortie d'une commande à la fin du fichier, sans écraser le contenu existant.
Exemples :
dir > liste_fichiers.txt: Enregistre la liste des fichiers du répertoire actuel dansliste_fichiers.txt(écrase le fichier si déjà existant).echo Bonjour >> message.txt: Ajoute le texte "Bonjour" à la fin du fichiermessage.txt.
Rediriger la sortie d'erreur standard (2>)
2>: Redirige les messages d'erreur vers un fichier.2>>: Ajoute les messages d'erreur à la fin du fichier.
Exemple :
dir dossier_inexistant 2> erreur.txt: Enregistre le message d'erreur généré par la commandedir(si le dossier n'existe pas) danserreur.txt.
Redirections combinées
Rediriger la sortie et l'erreur dans le même fichier
Vous pouvez rediriger à la fois la sortie standard et les erreurs standard dans un même fichier en utilisant
>et2>&1.
Exemple :
dir > sortie_et_erreurs.txt 2>&1: Enregistre à la fois la sortie normale et les messages d'erreur danssortie_et_erreurs.txt.
Redirection d'entrée standard (<)
<: Permet à une commande de lire les entrées depuis un fichier au lieu du clavier.
Exemple :
find "texte" < fichier.txt: Recherche le mot "texte" dans le fichierfichier.txt.
Résumé des opérateurs
Opérateur | Description |
|---|---|
| Redirige la sortie vers un fichier (écrase le fichier). |
| Redirige la sortie vers un fichier (ajoute au fichier). |
| Redirige les erreurs vers un fichier (écrase le fichier). |
| Redirige les erreurs vers un fichier (ajoute au fichier). |
| Redirige les erreurs vers la même destination que la sortie normale. |
| Redirige l'entrée depuis un fichier. |
Ces commandes sont très utiles pour automatiser des tâches et enregistrer les résultats ou erreurs dans des fichiers log, ce qui facilite l'analyse des scripts batch.