web-dev-qa-db-fra.com

Un fichier batch peut-il capturer les codes de sortie des commandes qu'il appelle?

En gros, disons que j'ai un fichier de commandes qui appelle myapp1.exe et que myapp1.exe se termine avec le code de sortie 1. Le fichier de commandes peut-il capturer ces informations et forcer le fichier de commandes à quitter avec ce même code de sortie ou exécuter une autre logique ?

22
Matt
@echo off
rem ...
set errorlevel=
MyApp1.exe
exit /b %errorlevel%

serait la variante explicite.

32
Joey

La réponse acceptée est correcte, mais si vous utilisez call pour appeler un autre script batch, et que ce second script batch utilise SetLocal, vous devrez peut-être utiliser une astuce d'analyse pour y parvenir. Si vous rencontrez ce problème, ajoutez le code suivant avant votre exit b:

ENDLOCAL&set myvariable=%myvariable%

Maintenant, la valeur de myvariable est mise à la disposition du contexte appelant et vous pouvez voir la valeur dans l'autre script.

Références:
https://stackoverflow.com/a/16167938/8959
http://www.borngeek.com/2008/05/22/exiting-batch-file-contexts/

4
Nate Cook

Vous pouvez essayer d'utiliser errorlevel s. Quelques informations supplémentaires ici .

4
cofiem

% ERRORLEVEL% stocke la valeur de retour de la dernière commande exécutée

call program.exe
echo program.exe returns "%ERRORLEVEL%"
IF %ERRORLEVEL% NEQ 0 (
  echo FAILED
)
3
emiliollbb