В принципе, скажем, что у меня есть пакетный файл, который вызывает myapp1.exe, а myapp1.exe завершает работу с кодом выхода 1. Может ли пакетный файл фиксировать эту информацию и заставить командный файл выйти с тем же кодом выхода или выполнить какая-то другая логика?
Может ли командный файл записывать коды выхода из команд, которые он вызывает?
Ответ 1
@echo off
rem ...
set errorlevel=
MyApp1.exe
exit /b %errorlevel%
будет явным вариантом.
Ответ 2
Вы можете попробовать использовать errorlevel
s. Дополнительная информация здесь.
Ответ 3
Принятый ответ верен, но если вы используете call
для вызова другой партии script, и эта вторая партия script использует SetLocal
, для этого вам может понадобиться синтаксический анализ. Если вы используете это, добавьте следующий код перед exit b
:
ENDLOCAL&set myvariable=%myvariable%
Теперь значение myvariable
становится доступным для вызывающего контекста, и вы можете увидеть его значение в другом script.
Литература:
fooobar.com/questions/255473/...
http://www.borngeek.com/2008/05/22/exiting-batch-file-contexts/
Ответ 4
% ERRORLEVEL% сохраняет возвращаемое значение последней выполненной команды
call program.exe
echo program.exe returns "%ERRORLEVEL%"
IF %ERRORLEVEL% NEQ 0 (
echo FAILED
)