if

Effectue un traitement conditionnel dans les programmes par lots.

Syntaxe

if [not] ERRORLEVEL <number> <command> [else <expression>]
if [not] <string1>==<string2> <command> [else <expression>]
if [not] exist <filename> <command> [else <expression>]

Si les extensions de commande sont activées, utilisez la syntaxe suivante :

if [/i] <string1> <compareop> <string2> <command> [else <expression>]
if cmdextversion <number> <command> [else <expression>]
if defined <variable> <command> [else <expression>]

Paramètres

Paramètre Description
not Spécifie que la commande doit être exécutée uniquement si la condition est false.
errorlevel <number> Spécifie une condition true uniquement si le programme précédent exécuté par Cmd.exe a retourné un code de sortie égal ou supérieur à number.
<command> Spécifie la commande qui doit être exécutée si la condition précédente est remplie.
<string1>==<string2> Spécifie une condition true uniquement si string1 et string2 sont identiques. Ces valeurs peuvent être des chaînes littérales ou des variables batch (par exemple, %1). Vous n’avez pas besoin de placer les chaînes littérales entre guillemets.
exist <filename> Spécifie une condition true si le nom de fichier spécifié existe.
<compareop> Spécifie un opérateur de comparaison à trois lettres, notamment :
  • EQU - Égal à
  • NEQ - N’est pas égal à
  • LSS - Inférieur à
  • LEQ - Inférieur ou égal à
  • GTR - Supérieur à
  • GEQ - Supérieur ou égal à
/i Force les comparaisons de chaînes à ignorer la casse. Vous pouvez utiliser /i sous la forme string1==string2 de if. Ces comparaisons sont génériques, car si les valeurs string1 et string2 sont composées de chiffres numériques uniquement, les chaînes sont converties en nombres et une comparaison numérique est effectuée.
cmdextversion <number> Spécifie une condition true uniquement si le numéro de version interne associé à la fonctionnalité d’extensions de commande de Cmd.exe est supérieur ou égal au nombre spécifié. La première version est 1. Elle augmente par incréments de 1 lorsque des améliorations significatives sont ajoutées aux extensions de commande. Le conditionnel cmdextversion n’est jamais vrai lorsque les extensions de commande sont désactivées (par défaut, les extensions de commande sont activées).
defined <variable> Spécifie une condition true si la variable est définie.
<expression> Spécifie une commande de ligne de commande et tous les paramètres à passer à la commande dans une clause else.
/? Affiche l'aide à l'invite de commandes.

Notes

  • Si la condition spécifiée dans une clause if est vraie, la commande qui suit la condition est exécutée. Si la condition est false, la commande de la clause if est ignorée et la commande exécute toute commande spécifiée dans la clause else.

  • Lorsqu’un programme s’arrête, il retourne un code de sortie. Pour utiliser des codes de sortie comme conditions, utilisez le paramètre errorlevel.

  • Si vous utilisez defined, les trois variables suivantes sont ajoutées à l’environnement : %errorlevel%, %cmdcmdline% et %cmdextversion%.

    • %errorlevel% : se développe en représentation sous forme de chaîne de la valeur actuelle de la variable d’environnement ERRORLEVEL. Cette variable suppose qu’il n’existe pas encore de variable d’environnement nommée ERRORLEVEL. Si c’est le cas, vous obtiendrez cette valeur ERRORLEVEL à la place.

    • %cmdcmdline% : se développe avec la ligne de commande d’origine qui a été passée à Cmd.exe avant tout traitement par Cmd.exe. Cela suppose qu’il n’existe pas encore de variable d’environnement portant le nom CMDCMDLINE. Si c’est le cas, vous obtiendrez cette valeur CMDCMDLINE à la place.

    • %cmdextversion% : développe la représentation sous forme de chaîne de la valeur actuelle de cmdextversion. Cela suppose qu’il n’existe pas encore de variable d’environnement portant le nom CMDEXTVERSION. Si c’est le cas, vous obtiendrez cette valeur CMDEXTVERSION à la place.

  • Vous devez utiliser la clause else sur la même ligne que la commande après le if.

Exemples

Pour afficher le message Fichier de données introuvable si le fichier Product.dat est introuvable, tapez :

if not exist product.dat echo Cannot find data file

Pour formater un disque dans le lecteur A et afficher un message d’erreur si une erreur se produit pendant le processus de formatage, tapez les lignes suivantes dans un fichier batch :

:begin
@echo off
format a: /s
if not errorlevel 1 goto end
echo An error occurred during formatting.
:end
echo End of batch program.

Pour supprimer le fichier Product.dat du répertoire actif ou afficher un message si Product.dat est introuvable, tapez les lignes suivantes dans un fichier batch :

IF EXIST Product.dat (
del Product.dat
) ELSE (
echo The Product.dat file is missing.
)

Notes

Ces lignes peuvent être combinées en une seule ligne comme suit :

IF EXIST Product.dat (del Product.dat) ELSE (echo The Product.dat file is missing.)

Pour afficher la valeur de la variable d’environnement ERRORLEVEL après avoir exécuté un fichier batch, tapez les lignes suivantes dans le fichier batch :

goto answer%errorlevel%
:answer1
echo The program returned error level 1
goto end
:answer0
echo The program returned error level 0
goto end
:end
echo Done!

Pour accéder à l’étiquette okay si la valeur de la variable d’environnement ERRORLEVEL est inférieure ou égale à 1, tapez :

if %errorlevel% LEQ 1 goto okay