⏹ IF
Syntaxe
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
NOT Indique que Windows 2000 n’effectue la commande que si la condition est fausse.
ERRORLEVEL nombre Condition vraie si le dernier programme exécuté a retourné un code sortie supérieur/égal au nombre donné.
chaîne1==chaîne2 Condition vraie si les chaînes spécifiées sont dentiques.
EXIST nom_de_fichier Condition vraie si le nom de fichier donné existe.
commande Spécifie la commande à exécuter si la condition est satisfaite.
💡
La clause ELSE doit être sur la même ligne que la commande suivant IF.
Par exemple:
IF EXIST nomfichier. (
del nomfichier.
) ELSE (
echo nomfichier. introuvable.
)
Ou
IF EXIST nomfichier. (del nomfichier.) ELSE echo nomfichier. introuvable
IF [/I] Chaîne1 op-de-comp Chaîne2 commande réalise une comparaison insensible à la casse.
IF DEFINED variable renvoie vrai si la variable existe.
Opérateur de comparaison :
- EQU - égal à
- NEQ - différent de
- LSS - inférieur à
- LEQ - inférieur ou égal à
- GTR - supérieur à
- GEQ - supérieur ou égal à
- == - Compare 2 chaines
%ERRORLEVEL% sera une représentation sous forme de chaîne de la valeur actuelle de ERRORLEVEL, pourvu qu’il n’existe pas déjà de variable d’environnement portant le nom ERRORLEVEL, auquel cas ce serait la valeur de cette dernière que vous obtiendriez.
FICHIER SCRIPT_IF.BAT
:: Commentaire
:: instruction qui désactive l'affichage des commandes
@ECHO OFF
DIR
::TEST SUR FICHIER
IF EXIST script01.BAT ECHO Le fichier SCRIPT01.BAT est créé
IF NOT EXIST SCRIPT99.BAT ECHO Le fichier SCRIPT99.BAT est absent
::TEST VARIABLE AGE
SET AGE=10
IF %AGE% LEQ 10 ECHO Vous avez moins de 10 ans
::TEST IF THEN ELSE
SET AGE=18
IF %AGE% LSS 10 (
ECHO Vous avez moins de 10 ans ) ELSE (
ECHO Vous avez 10 ans ou plus)
:: TEST CHAINE
SET AGE=TRENTE
IF %AGE%==TRENTE ECHO Vous avez trente ans
💡
Comme vous le voyez, le terminal de commande WINDOWS n'est pas sensible à la casse lorsqu'il s'agit de tester les répertoires et les fichiers.
Ainsi l'instruction suivante :
IF EXIST script01.BAT renvoie VRAI alors que le fichier se nomme
SCRIPT01.BAT sur le disque.
La comparaison de chaine distingue les minuscules et les majuscules.
Ainsi :
SET CHAINE=TOTO IF %CHAINE%==toto ECHO VRAI
n'affichera rien car toto ne vaut pas TOTO
Pour faire des comparaisons de chaines insensitives :
IF /I %CHAINE%==toto ECHO VRAI VRAI
💡
Pour tester une variable vide, il faut l'encadrer de préférence avec des crochets [%var%] == []
De telle sorte, la comparaison n'est pas vide.
Exemple
ECHO ON SET CHAINE= REM IF %CHAINE%=="" ECHO VIDE IF [%CHAINE%]==[] ECHO VIDE IF -%CHAINE%-==-- ECHO VIDE
Noter la première condition mise en commentaire :
Le terminal affiche IF =="" ECHO VIDE qui renverra une erreur et votre script s'arrêtera.
💡
Pour tester l'existence d'une variable :
IF DEFINED VAR ou IF NOT DEFINED
::TEST EXISTENCE VARIABLE TOTO IF NOT DEFINED TOTO ECHO TOTO N'EXISTE PAS !!! ::CREATION DE LA VARIABLE TOTO SET TOTO=J'EXISTE IF DEFINED TOTO ECHO TOTO EXISTE ::DESTRUCTION DE LA VARIABLE TOTO SET TOTO= IF NOT DEFINED TOTO ECHO TOTO IS DEAD !!! PAUSE TOTO N'EXISTE PAS !!! TOTO EXISTE TOTO IS DEAD !!! Appuyez sur une touche pour continuer...