Corriger la priorité des test de ERRORLEVELs de fichier de traitement par lots

Exclusion de responsabilité du contenu obsolète de la base de connaissances

Cet article a été rédigé sur les produits pour lesquels Microsoft n’offre plus aucune prise en charge. Par conséquent, cet article est proposé « en l’état » et ne sera plus mis à jour.

Résumé

Lorsque vous utilisez plusieurs instructions IF ERRORLEVEL dans les fichiers de traitement par lots, l’ordre dans lequel les ERRORLEVELs sont testées numériquement est important. L’ordre est décroissant (du plus élevé au plus bas). Ce classement est de la même manière Qu'errorlevels sont testés. La condition IF est définie sur TRUE lorsque ERRORLEVEL est égal ou supérieur à, le nombre ERRORLEVEL.

Plus d'informations

Le fragment de fichier de lot suivant illustre ce comportement INCORRECT :

   rem (execute a program which returns an errorlevel of 0 or 1)   if errorlevel 0 goto ZERO
if errorlevel 1 goto ONE
goto END
:ZERO
echo a Zero was returned!
goto END
:ONE
echo a One was returned!
:END

L’exemple ci-dessus crée toujours des branches à l’étiquette « Zéro », quel que soit le succès ou l’échec. Cet exemple montre comment fonctionnait correctement si le niveau d’erreur test a été effectué dans l’ordre décroissant.


La manière correcte d’écrire un tel fichier de traitement par lots est la suivante :
   rem (execute a program which returns an errorlevel of 0 or 1)   if errorlevel 1 goto ONE
if errorlevel 0 goto ZERO
goto END
:ZERO
echo a Zero was returned!
goto END
:ONE
echo a One was returned!
:END

Propriétés

ID d'article : 39585 - Dernière mise à jour : 27 janv. 2017 - Révision : 1

Commentaires