🏠 Home
⏎ Back

⏹ 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 :

%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
En image

💡

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
En image

💡

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
En image

Noter la première condition mise en commentaire :

Le terminal affiche IF =="" ECHO VIDE qui renverra une erreur et votre script s'arrêtera.

En image

💡

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...
En image