уровень ошибок в тестовом файле

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

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

"..\..\..\TeamBuildTypes\Current Branch\DatabaseUpdate.exe" -s localhost\sql2008r2 

IF %ERRORLEVEL% 1(
"..\..\..\TeamBuildTypes\Current Branch\DatabaseUpdate.exe" -s localhost\sql2008
)
Pause

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

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

Где я здесь не так?

Ответ 1

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!)

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

Ответ 2

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

IF '%ERRORLEVEL%'=='0' GOTO OK