Может ли пакетный файл захватить коды выхода команд, которые он вызывает? - PullRequest
20 голосов
/ 10 сентября 2010

По сути, допустим, что у меня есть пакетный файл, который вызывает myapp1.exe и myapp1.exe завершает работу с кодом выхода 1. Может ли пакетный файл захватить эту информацию и либо принудительно завершить пакетный файл с тем же кодом завершения, либо выполнить какая-то другая логика?

Ответы [ 4 ]

29 голосов
/ 10 сентября 2010
@echo off
rem ...
set errorlevel=
MyApp1.exe
exit /b %errorlevel%

будет явным вариантом.

4 голосов
/ 10 сентября 2010

Вы можете попробовать использовать errorlevel с.Дополнительная информация здесь .

3 голосов
/ 29 апреля 2014

Принятый ответ правильный, но если вы используете call для вызова другого пакетного сценария, а второй пакетный сценарий использует SetLocal, вам может потребоваться использовать трюк для анализа.Если вы столкнулись с этим, добавьте следующий код перед вашим exit b:

ENDLOCAL&set myvariable=%myvariable%

Теперь значение myvariable стало доступно для вызывающего контекста, и вы можете увидеть это значение в другом скрипте.

Ссылки:
https://stackoverflow.com/a/16167938/89590
http://www.borngeek.com/2008/05/22/exiting-batch-file-contexts/

0 голосов
/ 25 сентября 2015

% ERRORLEVEL% хранит возвращаемое значение последней выполненной команды

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