Syntaxe batch

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Sujet Syntaxe et structure des scripts batch
Interpréteur cmd.exe
Voir aussi Batch · Routines (batch) · Menu (batch)

Cette page récapitule la syntaxe de base des scripts batch : opérateurs de comparaison, variables, branchements conditionnels et boucles.

Opérateurs de comparaison

Opérateur Signification
EQU égal à
NEQ différent de
LSS inférieur à
LEQ inférieur ou égal à
GTR supérieur à
GEQ supérieur ou égal à

Variables et saisie

:: Demander une saisie à l'utilisateur
set /p nom= Quel est votre nom ?

:: %1 est un paramètre d'entrée du script
dir /s %1 > %2

:: Périmètre de validité d'une variable
setlocal
set une_variable=une_valeur
... {des instructions} ...
endlocal

:: Opérations arithmétiques
set /a une_variable={expression arithmétique}
set /a compteur=%compteur%+1
set /a compteur+=1

:: Rediriger le canal d'erreur
uneCommande 2> nul

Branchements et boucles

:: Branchement conditionnel
if (condition) (commande1) else (commande2)

:: if exist
if exist unFichier.ext del unFichier.ext
if not exist unFichier.ext echo Pas de fichier

:: if defined
if defined uneVariable uneCommande

:: if errorlevel
if errorlevel n uneCommande

:: Comparaison de chaînes
if chaine1 == chaine2 uneCommande
if /i chaine1 gtr chaine2 uneCommande
if "%1" == uneChaine uneCommande

:: goto
goto :label
... {quelques commandes} ...
:label
... {d'autres commandes} ...

if (condition) goto :label
if (condition) goto :eof

Boucle construite avec if et goto, puis son équivalent avec for /l :

@echo off
set /a counter=0
:numbers
set /a counter=%counter%+1
if %counter% == 100 (goto :eof) else (echo %counter% >> E:\count.txt)
goto :numbers
@echo off
for /l %%X in (1,1,99) do (echo %%X >> E:\count.txt)

Itération avec for

Structure générale :

for {chaque élément} in {un ensemble d'éléments} do {commande}
for %%X in (ensemble) do (commande)

Commutateurs principaux :

Option Effet
/D l'ensemble contient des répertoires
/R exécution récursive dans les sous-répertoires
/L boucle avec paramètres début, pas, fin
/F parcours de fichiers ou de sorties de commandes

Exemples :

:: Itération simple dans une liste
for %%X in (fichier1 fichier2 fichier3) do commande
for %%X in (eenie meenie miney moe) do (echo %%X)
for %%X in (*.jpg) do commande
for %%X in (*.jpg *.gif *.png *.bmp) do commande

:: Boucler sur une série de valeurs
for /l %%X in (début, pas, fin) do commande
for /l %%X in (1,1,99) do (echo %%X >> E:\nombres.txt)

:: Parcourir des répertoires
for /d %%X in (ensembleDeRepertoires) do commande
for /d %%X in (C:\*) do echo %%X

:: Parcourir récursivement les sous-répertoires
for /r [repertoireParent] %%X in (ensemble) do commande
for /r C:\photos %%X in (*.jpg) do (echo %%X >> E:\listeJPG.txt)

:: Parcourir des fichiers, chaînes et sorties de commandes
for /f [options] %%X in (source) do commande

Voir aussi