89 votes

Comment vérifier le code de sortie de la dernière commande dans un fichier batch ?

Dans un fichier batch sous Windows, j'utilise 7-zip comme ça :

...\right_path\7z a output_file_name.zip file_to_be_compressed

Comment puis-je vérifier le code de sortie de 7z et prendre les mesures appropriées ?

104voto

Damian Powell Points 315

Tester pour un code de retour supérieur ou égal à 1 :

if ERRORLEVEL 1 echo Error

o

if %ERRORLEVEL% GEQ 1 echo Error

ou tester pour un code de retour égal à 0 :

if %ERRORLEVEL% EQU 0 echo OK

Vous pouvez utiliser d'autres commandes telles que GOTO où je montre echo .

13voto

Cela fonctionne vraiment quand vous avez : App1.exe appelle -> .bat qui s'exécute --> app2.exe

App2 renvoie le niveau d'erreur 1... mais vous devez l'attraper dans le .bat et le relancer à app1... sinon .bat mange le niveau d'erreur et app1 ne le sait jamais.

Méthode :

Dans .bat :

app2.exe
if %ERRORLEVEL% GEQ 1 EXIT /B 1

Il s'agit d'une vérification après l'application 2 pour le niveau d'erreur. Si > 0, alors le .bat se termine et met le niveau d'erreur à 1 pour l'application appelante.

4voto

J'avais un lot script dans le pipeline Teamcity et il n'est pas sorti après que son enfant script soit sorti avec le code 1.

Pour résoudre le problème, j'ai ajouté cette chaîne IF %ERRORLEVEL% NEQ 0 EXIT 1 après l'appel du script enfant.

main-script.bat

...some code
call child-script.bat
IF %ERRORLEVEL% NEQ 0 EXIT 1
...some code

Après l'appel script enfant, le résultat de la sortie est sauvegardé dans le fichier %ERRORLEVEL% . S'il est sorti avec une erreur %ERRORLEVEL% ne serait pas égal à 0 et dans ce cas nous sortons avec le code 1 (erreur).

1voto

iTwasnTme Points 5586

**Essayez ça :

cd.>nul | call Your_7z_File.Bat && Goto :Next || Goto :Error

:: Or...

cd.>nul | ...\right_path\7z.exe a output_file_name.zip file_to_be_compressed && Goto :Next || Goto :Error** 

1) Définir le niveau d'erreur == 0

cd.>nul

2) Redirection par | pour appeler simultanément Your_7z_File.Bat

cd.>nul | call Your_7z_File.Bat

3) Laisse la sortie/niveau d'erreur à une exécution conditionnelle && y || filtrer l'action suivante

cd.>nul | call Your_7z_File.Bat && Goto :Next || Goto :Error

Vous pouvez également le tester en ligne de commande en ajoutant echo/ :

cd.>nul | call Your_7z_File.Bat && echo\Goto :Next || echo\Goto :Error

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X