Partager via


si

Effectue le 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 Descriptif
non Spécifie que la commande doit être effectuée uniquement si la condition est false.
<number> de niveau d’erreur 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 à nombre.
<command> Spécifie la commande à exécuter si la condition précédente est remplie.
<string1>==<string2> Spécifie une condition true uniquement si chaîne1 et chaîne2 sont identiques. Ces valeurs peuvent être des chaînes littérales ou des variables de lot (par exemple, %1). Vous n’avez pas besoin de placer des chaînes littérales entre guillemets.
existe <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 - Non égal à
  • LSS - Inférieur à
  • LEQ - Inférieur ou égal à
  • GTR - Supérieur à
  • GEQ - Supérieur ou égal à
/Je Force les comparaisons de chaînes à ignorer la casse. Vous pouvez utiliser /i sous la forme string1==string2 de si. Ces comparaisons sont génériques, car si chaîne1 et chaîne2 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 égal ou supérieur au nombre spécifié. La première version est 1. Il augmente par incréments d’un lorsque des améliorations significatives sont ajoutées aux extensions de commande. La cmdextversion conditionnelle n’est jamais vraie lorsque les extensions de commande sont désactivées (par défaut, les extensions de commande sont activées).
défini <variable> Spécifie une condition true si variable est définie.
<expression> Spécifie une commande de ligne de commande et tous les paramètres à passer à la commande dans un autre clause.
/? Affiche l’aide à l’invite de commandes.

Remarques

  • Si la condition spécifiée dans un si clause a la valeur true, la commande qui suit la condition est effectuée. Si la condition est false, la commande de l'si clause est ignorée et que la commande exécute une commande spécifiée dans la clause autre.

  • Lorsqu’un programme s’arrête, il retourne un code de sortie. Pour utiliser des codes de sortie en tant que conditions, utilisez le paramètre niveau d’erreur.

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

    • %errorlevel%: se développe dans une 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 existante portant le nom ERRORLEVEL. S’il en existe, vous obtiendrez plutôt cette valeur ERRORLEVEL.

    • %cmdcmdline%: se développe dans 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 existante portant le nom CMDCMDLINE. Si c’est le cas, vous obtiendrez plutôt cette valeur CMDCMDLINE.

    • %cmdextversion%: se développe dans 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 existante portant le nom CMDEXTVERSION. Si c’est le cas, vous obtiendrez plutôt cette valeur CMDEXTVERSION.

  • Vous devez utiliser la clause autre sur la même ligne que la commande après la si.

Exemples

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

if not exist product.dat echo Cannot find data file

Pour mettre en forme un disque dans le lecteur A et afficher un message d’erreur si une erreur se produit pendant le processus de mise en forme, tapez les lignes suivantes dans un fichier de commandes :

: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 de commandes :

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

Remarque

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 faire écho à 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 ok si la valeur de la variable d’environnement ERRORLEVEL est inférieure ou égale à 1, tapez :

if %errorlevel% LEQ 1 goto okay