уровень ошибок теста пакетного файла - PullRequest
18 голосов
/ 25 июля 2011

Я пытаюсь условно запустить exe-файл из командного файла при условии, что другой exe-файл успешно выполняется.

Я пробовал несколько различных комбинаций IF и ERRORLEVEL, но ни одна из них, похоже, не работает1004 *

Дает мне ошибку

1 (было неожиданно в это время.

Куда я здесь не так?

Ответы [ 2 ]

42 голосов
/ 25 июля 2011

IF ERRORLEVEL ... - это специальный синтаксис, поддерживаемый со времен DOS, в WinNT была добавлена ​​поддержка переменных %ERRORLEVEL%.

Исходный синтаксис используется следующим образом:

call someapp.exe
if errorlevel 1 goto handleerror1orhigher
echo succuess... 

Чтобы использовать переменную, используйте обычный синтаксис IF: if %errorlevel%==0 echo success...

Обратите внимание, что %errorlevel% перестает работать, если кто-то выполняет set errorlevel=foo, и он может не обновляться для внутренних команд cmd.exe.

Альтернативное решение заключается в использовании &&:

call someapp.exe && (echo success) || (echo error!)

Есть (по крайней мере) два известных случая, когда уровень ошибки нарушен, и вы должны использовать || вместо:

5 голосов
/ 25 сентября 2014

Отрицательные уровни ошибок могут создать проблему. Попробуйте что-то вроде этого:

IF '%ERRORLEVEL%'=='0' GOTO OK
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...