Получить код ошибки из командного файла
У меня есть пакетный файл, который запускает несколько исполняемых файлов, и я хочу, чтобы он завершился успешно, но остановился, если код выхода <> 0. Как мне это сделать?
2 ответа
Похоже, вам понадобится команда "If Errorlevel". Предполагая, что ваш исполняемый файл возвращает не-0 код завершения при ошибке, вы делаете что-то вроде:
myProgram.exe
if errorlevel 1 goto somethingbad
echo Success!
exit
:somethingbad
echo Something Bad Happened.
Проверка уровня ошибки выполняется как проверка большего или равного значения, поэтому любое значение выхода, отличное от 0, вызовет переход. Поэтому, если вам нужно проверить более одного определенного значения выхода, вы должны сначала проверить самое высокое значение.
Вы также можете использовать условные символы обработки для простой проверки успеха / неудачи. Например:
myProgram.exe && echo Done!
будет печатать Done!
только если myProgram.exe
вернулся с уровнем ошибки 0.
myProgram.exe || PAUSE
приведет к приостановке пакетного файла, если myProgram.exe вернет ненулевой уровень ошибки.
Лучшее решение, чем ответ Геллиона, - это проверка%ERRORLEVEL%
переменная окружения:
IF %ERRORLEVEL% NEQ 0 (
REM do something here to address the error
)
Он выполняет IF
body, если код возврата отличный от нуля, а не только значения больше нуля.
Команда IF ERRORLEVEL 1 ...
пропускает отрицательные возвращаемые значения. Некоторые программы могут также использовать отрицательные значения для обозначения ошибки.
Кстати, мне нравится ответ Черана (используя&&
а также ||
операторы), и рекомендую это всем.
Для получения дополнительной информации по теме прочтите эту статью