Подтвердить что ты не робот

Получить код ошибки из пакетного файла

У меня есть пакетный файл, в котором выполняется несколько исполняемых файлов, и я хочу, чтобы он завершил работу с успехом, но остановитесь, если код выхода < > 0. Как это сделать?

4b9b3361

Ответ 1

Похоже, вам понадобится команда "If Errorlevel". Предполагая, что ваш исполняемый файл возвращает код выхода, отличный от 0, вы делаете что-то вроде:

myProgram.exe
if errorlevel 1 goto somethingbad
echo Success!
exit
:somethingbad
echo Something Bad Happened.

Проверка уровня ошибок выполняется как проверка большего или равного, поэтому любое значение, отличное от 0, вызовет скачок. Поэтому, если вам нужно проверить более чем одно конкретное значение выхода, сначала нужно проверить высочайший.

Ответ 2

Вы также можете использовать условные символы обработки, чтобы выполнить простую проверку успеха/сбоя. Например:

myProgram.exe && echo Done!

будет печатать Done!, только если myProgram.exe возвращается с уровнем ошибки 0.

myProgram.exe || PAUSE

приведет к приостановке командного файла, если myProgram.exe вернет ненулевой уровень ошибок.

Ответ 3

Решение, которое лучше, чем ответ геллиона, проверяет переменную среды %ERRORLEVEL%:

IF %ERRORLEVEL% NEQ 0 (
  REM do something here to address the error
)

Он выполняет тело IF, если код возврата отличается от нуля, а не только от значений больше нуля.

Команда IF ERRORLEVEL 1 ... пропускает отрицательные возвращаемые значения. Некоторые программы могут также использовать отрицательные значения для обозначения ошибки.

Кстати, я люблю Черанский ответ (используя операторы && и ||) и рекомендую это всем.

Подробнее о теме читайте в этой статье.