Commande | Description | Example |
---|---|---|
ECHO ECHO. @ECHO texte @ECHO [ON|OFF] | Affiche un message à l'écran: Affiche une ligne vide N'affiche pas la commande à l'écran, seulement le résultat. Active ou désactive l'affichage des commandes à l'écran. Note: Cette commande n'a pas d'effet sur l'affichage que produira une commande. | ECHO Bonjour le monde! ECHO. @ECHO Hello Wolrd! ECHO OFF @ECHO OFF |
REM ou :: | En début de ligne, permet de documenter le code source. | REM Projet réalisé par moi. REM --------------------- :: Ceci est un autre commentaire |
PAUSE | Insérer une pause dans l'exécution d'un script batch. Il faut appuyer sur une touche pour continuer. | Echo. PAUSE Echo suite du programme. |
cmd.exe /c chcp 65001 | Activer un jeu de caractères étendus ce qui permet d'afficher correctement les caractères accentués des messages d'un fichier batch. | |
%1..%9 | Variables qui contiennent les paramètres passés au fichier batch. Note: Il est possible d'itérer les paramètres reçus grace à l'instruction FOR: REM Voir instruction FOR FOR %%A IN (%*) DO ( echo ------------------------------- echo contenu = %%A ) | Si 'tp.bat' contient echo %1 chèr(e) %2 Alors c:>tp Allo Bob va afficher Allo cher(e) Bob ------- %1 = Allo %2 = Bob tp.bat "Allo Bob" %1 = Allo Bob |
%0 | Variable qui contient le nom du fichier batch | tp.bat Allo Bob %0 = tp.bat |
SET variable= SET /p variable= | Définir une variable dans un script. Note: Il ne faut insérer d'espaces entre la variable et l'affectation. Par exemple, SET a = 99. n'est pas valide! À l'utilisation de la variable, il faut délimiter le nom avec le caractère %. L’option /A spécifie que la chaîne à droite du signe égal est une expression numérique qui est évaluée. Par exemple, SET /A i=0 SET /A i+=1 Créer une variable à partir d'une saisie clavier. | SET secret=password echo %secret% if %1==%secret% echo ... SET /p option=Option menu (1,2,3,99)? |
IF | Lance l’exécution conditionnelle dans un programme de commandes. IF [NOT] ERRORLEVEL nombre commande IF [NOT] chaîne1==chaîne2 commande IF [NOT] EXIST nom_de_fichier commande IF condition (commande) ELSE commande ** La clause ELSE doit être sur la même ligne que la commande suivant IF. Par exemple: EQU - égal à NEQ - différent de LSS - inférieur à LEQ - inférieur ou égal à GTR - supérieur à GEQ - supérieur ou égal à IF EXIST nomfichier (del nomfichier) ELSE echo nomfichier introuvable IF %ERRORLEVEL% LEQ 1 goto okay NOTE: Pour avoir de l'aide sur la commande IF; c:>IF /? | IF "coucou" EQU "coucou" ECHO oui! if 123 LSS 99 (echo 123 plus petit que 99) ELSE echo 99 plus petit que 123 if %1 LSS %2 (echo %1 plus petit que %2) ELSE echo %2 plus petit que %1 login.bat -> @echo off SET secret=password SET msg=Mot de passe if %1==%secret% ( echo %msg% valide ) else ( echo %msg% Invalide ) IF EXIST tp.bat ECHO le fichier tp est présent dans le dossier. |
FOR | Exécute une boucle sur un ensemble de valeurs. Dans un fichier .BAT: FOR %%variable IN (ensemble) DO commande [paramètres] %variable Spécifie un paramètre remplaçable par une seule lettre. (ensemble) Ensemble de fichiers. Caractères génériques autorisés. commande Commande à exécuter pour chaque fichier. paramètres Liste des paramètres ou des options pour la commande spécifiée. À partir de l'invite: FOR %variable IN (ensemble) DO commande [paramètres] | EXEMPLE 1 test.bat @echo off for %%f in (*.bat) do ( echo voici le contenu du fichier: %%f type %%f echo --------------------------- echo. pause ) ================================ EXEMPLE 2 for %%f in (allo mon coco) do ( echo %%f ) ================================ EXEMPLE 3 ECHO Voici la liste des paramètres reçus: SET /A compteur=0 setlocal ENABLEDELAYEDEXPANSION FOR %%A IN (%*) DO ( echo param !compteur! = %%A SET /A compteur=compteur+1 ) |
CALL | Exécute un script à partir d'un autre script. Il est possible de sortir d'un script après une condition donnée: IF ... EXIT [/B] [exitCode] Le exitCode peut-être testé avec: IF %ERRORLEVEL% LEQ 1 CALL :ERREUR ... :ERREUR | CALL afficher.bat "Bonjour le monde" ------- Fichier afficher.bat: echo --------------------------- echo %1 echo --------------------------- EXIT 0 |
FIND | Recherche une chaîne de texte dans un ou des fichiers. FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "chaîne" [[lecteur:] [chemin]nom_de_fichier[ ...]] /V Affiche toutes les lignes ne contenant pas la chaîne spécifiée. /C Affiche seulement le nombre de lignes contenant la chaîne. /N Affiche les numéros de ligne avec les lignes affichées. /I Ignore la casse lors de la recherche de la chaîne. /OFF[LINE] Ne pas ignorer les fichiers dont l’attribut hors connexion a été réglé. "chaîne" Spécifie la chaîne de texte à trouver. [lecteur:][chemin]nom_de_fichier Spécifie un ou des fichiers pour la recherche. Sans nom de chemin, FIND recherche le texte entré à l’invite ou redirigé depuis une autre commande. NOTE: Find retourne la valeur 0 si trouvé ou 1 si pas trouvé. Il est possible de tester la valeur avec 'if errorlevel n' | FIND /i "Elvis" MesAmis.txt DIR *.bat | FIND /i "tp.bat" =================== @echo off find /C /I "%1" MesAmis.txt > nul if errorlevel 1 goto pasami echo %1 est mon ami echo. goto fin :pasami echo %1 n'est pas mon ami echo. :fin pause |
Avant de tester les exemples, charger les caractères étendus francophones en tapant la commande suivante à l’invite du CLI.
cmd.exe /c chcp 65001
@ECHO off REM Fichier: Ex02.bat REM Auteur: REM Date: :: -------------------------------------------- :: Description: Afficher un message à l'écran :: ECHO OFF permet de masquer les commandes qui vont être exécutées par la suite :: le @ permet de masquer cette même commande :: cls permet d'effacer l'écran :: -------------------------------------------- CLS REM echo affiche le message bonjour ECHO bonjour REM echo suivi d'un point permet d'insérer une ligne vierge echo. ECHO. rem affiche la suite du message ECHO tout le monde !
@ECHO OFF REM Fichier: Ex02.bat REM Auteur: REM Date: REM -------------------------------------------- REM Description REM -------------------------------------------- ECHO Bonjour %1!
@ECHO OFF REM Fichier: Ex03.bat REM Auteur: REM Date: REM -------------------------------------------- REM Description: Tester une condition avec IF REM Note: if /? à l'invite pour de l'aide REM -------------------------------------------- IF %1 LSS %2 (echo %1 est plus petit que %2) ELSE (echo %1 est plus grand que %2)
@ECHO OFF REM Fichier: Ex04.bat REM Auteur: REM Date: REM -------------------------------------------- REM Description: Boucler sur des fichiers REM Note: FOR /? à l'invite pour de l'aide REM -------------------------------------------- for %%f in (*.bat) do ( echo voici le contenu du fichier: %%f type %%f echo -------------------------------- echo. pause )
:: Fichier: Ex04a.bat :: Auteur: :: Date: :: -------------------------------------------- :: Description: Boucler sur un ensemble :: Note: FOR /? à l'invite pour de l'aide :: -------------------------------------------- @ECHO OFF for %%f in (allo mon coco) do ( echo %%f )
:: Fichier: Ex04b.bat :: Auteur: :: Date: :: -------------------------------------------- :: Description: Boucler sur les paramètres :: Note: FOR /? à l'invite pour de l'aide :: -------------------------------------------- @ECHO OFF ECHO Voici la liste des paramètres reçus: SET /A compteur=1 setlocal ENABLEDELAYEDEXPANSION FOR %%A IN (%*) DO ( echo param !compteur! = %%A SET /A compteur=compteur+1 )
@ECHO OFF REM Fichier: Ex04b.bat REM Auteur: REM Date: REM -------------------------------------------- REM Description: Concaténation de fichiers REM Note: FOR /? à l'invite pour de l'aide REM -------------------------------------------- echo. for %%a in (*.bat) do type %%a >> batch.txt echo Voici le resultat du fichier batch.txt pause ECHO ============================================ type batch.txt ECHO ============================================ pause CLS
@ECHO OFF REM Fichier: Ex04b.bat REM Auteur: REM Date: REM -------------------------------------------- REM Description: Concaténation de fichiers REM Note: FOR /? à l'invite pour de l'aide REM -------------------------------------------- echo Utilisation de la commande call echo. rem On utilisera Ex02.bat, celui avec plusieurs paramètres call Ex02.bat %1 %2 echo. echo Retour au script principal ! echo. pause
Instruction de branchements: GOTO
Fichier b.bat
:: Fichier b.bat @Echo off Echo Ceci est la ligne 1 GOTO ligne3 :: La commande suivante ne sera pas exécutée!! Echo Ceci est la ligne 2 :ligne3 Echo Ceci est la ligne 3
Instruction pour quitter un BATCH avec un code d’erreur: EXIT /B code
Fichier err.bat
:: Fichier err.bat @ECHO off if NOT 1==2 EXIT /B 99
Créer un fichier MesAmis.txt avec le contenu suivant:
John Claire Gabriel Stephane Madeleine Sylvain Garry Daniel Martine
Tester la commande FIND
find /i "garry" MesAmis.txt type MesAmis.txt | find /i "garry" type MesAmis.txt | find /i /c "garry" echo %errorlevel%
Fichier ex07.bat
@echo off cmd.exe /c chcp 65001 cls echo ------------------------------------------------------- echo Utilisation de la commande find echo ------------------------------------------------------- echo Exemple 1 echo. echo Recherche d'une chaîne de caractères dans un fichier echo avec l'option /i pour ignorer la casse. echo C:^\^> find /i "garry" MesAmis.txt echo ------------------------------------------------------- find /i "garry" MesAmis.txt pause cls echo ------------------------------------------------------- echo Exemple 2 echo. echo Recherche sans l'option i echo C:^\^> find "garry" MesAmis.txt echo ------------------------------------------------------- find "garry" MesAmis.txt pause cls echo ------------------------------------------------------- echo Exemple 3 echo. echo Afficher toutes les lignes qui ne contiennent echo pas la chaine de caractères spécifiée echo C:^\^> find /v "Claire" MesAmis.txt echo ------------------------------------------------------- find /v "Claire" MesAmis.txt pause cls echo ------------------------------------------------------- echo Exemple 4 echo. echo Afficher toutes les lignes qui contiennent "iel" echo C:^\^> find "iel" MesAmis.txt echo ------------------------------------------------------- find "iel" MesAmis.txt pause cls echo ------------------------------------------------------- echo Exemple 5 echo. echo Afficher toutes les lignes qui contiennent "iel", echo prédédées par le numéro de la ligne echo C:^\^> find /n "iel" MesAmis.txt echo ------------------------------------------------------- find /n "iel" MesAmis.txt pause cls echo ------------------------------------------------------- echo Exemple 6 echo. echo Compter le nombre de lignes qui contiennent "iel" echo C:^\^> find /c "iel" MesAmis.txt echo ------------------------------------------------------- find /c "iel" MesAmis.txt pause cls echo ------------------------------------------------------- echo Exemple 7 echo. echo Utilisation de tube ou pipe echo C:^\^> type MesAmis.txt ^| find /i "garry" echo ------------------------------------------------------- type MesAmis.txt | find /i "garry" pause cls echo ------------------------------------------------------- echo Exemple 8 echo. echo Utilisation de tube ou pipe echo C:^\^> type MesAmis.txt ^| find /i /c "iel" echo ------------------------------------------------------- type MesAmis.txt | find /i /c "iel" echo. Echo FIN de l'application
Fichier ex07a.bat
@echo off :: Fichier : Ex07a.bat :: Fonction : Utilisation de la commande FIND echo Utilisation de FIND echo. find /C /I "%1" MesAmis.txt > nul if errorlevel 1 goto pasami echo %1 est mon ami echo. goto fin :pasami echo %1 n'est pas mon ami echo. :fin pause
Fichier login.bat
:: Fichier login.bat @ECHO off CLS SET /P motPasse=Entrez le mot de passe: IF NOT %motPasse%==secret goto erreur ECHO. ECHO Succès, le mot de passe est valide. EXIT /B 0 :erreur Echo ERR - Le mot de passe est invalide!!! EXIT /B 2
Fichier ex08.bat
@echo off rem Fichier: Ex08.bat rem Fonctions: rem - Affiche un menu avec 4 choix rem - Utilisation de la commande SET /p rem - Appels d’autres scripts batch rem Le echo off cache les commandes exécutées et le '@' cache le echo off comme tel rem point d'ancrage avant le menu :boucle rem Efface la fenêtre de commande pour afficher le menu en haut de l'écran cls echo Bienvenue au menu principal! echo. echo Veuillez effectuer un choix parmi les suivants: echo 1. Option A echo 2. Option B echo 3. Option C echo 4. Option D (sortie) rem initialise la variable choix set choix=null rem Affiche Votre choix: (grâce au /P) et attend une entrée de l'utilisateur rem qui sera, par la suite, assignée à la variable choix. set /p choix=Qu'est-ce que vous choisissez (1/2/3/4)? rem Condition qui teste si la variable choix est égal à 4. Si c'est le cas, le rem programme saute au point d'ancrage :fin, ce qui termine l'exécution. if %choix% == 4 goto fin rem Les 3 prochains "if" s'exécutent si la variable choix est égale à leur valeur rem (1,2 ou 3) et appellent le fichier .bat qui correspond à leur choix (voir menu). if %choix% == 1 CALL OptionA.bat if %choix% == 2 CALL OptionB.bat if %choix% == 3 CALL OptionC.bat echo. pause rem Saut à l'ancrage :boucle pour réafficher le menu après l'exécution d'un choix goto boucle :fin echo Au revoir! ----------------------------------------- @echo off rem Fichier: OptionC.bat rem Auteur: Enseignant Ordinateurs et systèmes d'exploitation rem Fonction: Affiche un message cls echo. echo Option C choisie echo.
Créer le fichier fruits.txt avec le contenu suivant:
banane orange Pomme abricot %%banane Abricot ORANGE
@echo off rem Fichier: Ex09.bat rem Fonction: Trier le contenu d’un fichier dans l’ordre croissant ou décroissant rem selon le choix de l’utilisateur :: ------------------------------------------ cmd.exe /c chcp 65001 cls echo. set /p ordre= Est ce que vous voulez trier dans l'ordre [c]roissant ou [d]écroissant? if %ordre% == c goto tri if %ordre% == d goto tri goto erreurSaisie :tri set /p chemin=Donnez le chemin du fichier à trier: if not exist %chemin% goto erreurFichier echo. echo Le nom du fichier à trier est: %chemin% if %ordre%==c sort %chemin% > fruitsC.txt if %ordre%==d sort /r %chemin% > fruitsD.txt :: Tester le code de retour de la commande SORT if %errorlevel 0 echo le fichier a été trié sans problème :fin :: Le programme s'est terminé de façon normale. :: Retourne la valeur 0 dans errorlevel exit /B 0 :erreurSaisie echo ERR 1: Choix de tri invalide! :: Retourne la valeur 1 dans errorlevel exit /B 1 :erreurFichier echo ERR 2: Fichier non trouvé! :: Retourne la valeur 2 dans errorlevel exit /B 2
Menu.bat – Afficher un menu
@echo off REM Fichier: MENU.BAT REM Auteur: REM Date: REM -------------------------------------------- REM Description REM -------------------------------------------- :debut :: Fond d'écran bleu, caractères blancs color 1F cls echo ┌──────────────────────────┐ echo │ Menu principal │ echo │ │ echo │ (A)fficher le répertoire │ echo │ (D)ate du système │ echo │ (T)trier un fichier │ echo │ (C)Créer un répertoire │ echo │ (Q)uitter le menu │ echo └──────────────────────────┘ echo. set option=null set /p option=Option (A/D/T/Q)? if /i %option%==q goto quitter if /i %option%==a DIR /P if /i %option%==d DATE if /i %option%==t CALL trier.bat if /i %option%==c CALL creerRep.bat echo. pause goto debut :quitter
Fichier creerRep.bat
:: Fichier creerRep.bat @echo off CLS SET /P nom=Entrez le nom du répertoire à créer: md %nom%