TexteTop
Communauté

Login Membres: 6199


Menu

Liens



flecheCommande IF

Type: script

Fonction: Effectue un traitement conditionnel dans un fichier de commandes.

OS: vista,xp

Detail: 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é.
commande Spécifie la commande à exécuter si la condition est
satisfaite.

chaîne1==chaîne2 Condition vraie si les chaînes spécifiées sont
identiques.

EXIST nom_de_fichier Condition vraie si le nom de fichier donné existe.

commande Spécifie la commande à exécuter si la condition est
vérifiée. Commande peut être suivi de la commande ELSE
qui exécutera la commande située après le mot-clé ELSE
si la condition est fausse (FALSE)

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.
)

L'exemple suivant NE marche PAS car la commande del doit être terminée
par une nouvelle ligne :

IF EXIST nomfichier. del nomfichier. ELSE echo nomfichier. introuvable

L'exemple suivant NE marche PAS non plus, car la commande ELSE doit être sur
la même ligne que la fin de la commande IF :

IF EXIST nomfichier. del nomfichier.
ELSE echo nomfichier. introuvable

Enfin, l'exemple suivant marche si vous l'écrivez sur une seule ligne :

IF EXIST nomfichier. (del nomfichier.) ELSE echo nomfichier. introuvable

Si les extensions de commandes sont activées, IF est modifié comme suit :

IF [/I] Chaîne1 op-de-comp Chaîne2 commande
IF CMDEXTVERSION nombre commande
IF DEFINED variable commande

où op-de-comp peut être :

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

et le commutateur /I, s'il est spécifié, demande d'ignorer la casse dans la
comparaison des chaînes. Le commutateur /I peut également être utilisé pour
la forme Chaîne1==Chaîne2 de IF. Ces comparaisons sont génériques : si les
chaînes Chaîne1 et Chaîne2 sont toutes deux faites uniquement de chiffres,
alors elles sont converties en nombres, et une comparaison numérique est
alors effectuée.

La condition CMDEXTVERSION marche comme ERRORLEVEL, sauf qu'elle compare
à un numéro de version interne associé aux extensions de commandes. La
première version des extensions est 1. Ce numéro sera incrémenté de un à
chaque amélioration significative. La condition CMDEXTVERSION n'est jamais
vraie lorsque les extensions de commandes sont désactivées.

La condition DEFINED fonctionne comme EXISTS, sauf qu'elle prend un nom de
variable d'environnement et renvoie vrai si la variable d'environnement
est définie.

%ERRORLEVEL% sera une représentation sous forme de chaîne de la valeur
en cours 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. En utilisant cela et les comparateurs
numériques ci-dessous, vous pouvez faire :

goto answer%ERRORLEVEL%
:answer0
echo Le programme a retourné le code 0
:answer1
echo Le programme a retourné le code 1

vous pouvez aussi faire, en utilisant les comparaisons numériques ci-dessus :

IF %ERRORLEVEL% LEQ 1 goto okay

%CMDCMDLINE% sera la ligne de commande originale passée à CMD.EXE avant
tout traitement par CMD.EXE, pourvu qu'il n'existe pas déjà de variable
d'environnement portant le nom CMDCMDLINE, auquel cas ce serait la valeur
de cette dernière que vous obtiendriez.

%CMDEXTVERSION% sera une chaîne représentant la valeur actuelle de
CMDEXTVERSION, tant qu'il n'existe pas déjà de variable d'environnement
appelée CMDEXTVERSION, dans quel cas vous obtiendrez sa valeur à la place.