уровень ошибок работает на одном сервере, но не на другом

У меня есть два сервера Windows 2008 SP2, один разработчик другого производства. В рабочей среде запущены службы Microsoft CLuster. Теперь в одном конкретном пакетном скрипте есть следующие команды:

dsmc incr "%ARCHIVE_DIR%\*"
if errorlevel 1 goto EXCPT
more code to do purging

Excpt:
echo "script backup error"

В dev это работает, как и ожидалось, dsmc incr возвращает 8 при успешном завершении, и скрипт переходит к очистке кода. Однако в производственной среде, несмотря на то, что dsmc incr возвращает 8, уровень ошибки всегда оценивается как 1, и он переходит к Excpt: . Может ли кто-нибудь помочь в этом, пожалуйста?


person Nishant Bhardwaj    schedule 29.08.2013    source источник
comment
У меня есть обновление, dsmc incr возвращает 0 на dev и возвращает код 8 на производстве. поэтому имеет смысл согласно ссылке, если уровень ошибки 1 означает, что уровень ошибки больше или равно 1, а не только единице.   -  person Nishant Bhardwaj    schedule 30.08.2013
comment
Исправьте это в своем вопросе!   -  person LS_ᴅᴇᴠ    schedule 30.08.2013


Ответы (1)


Проверьте IF помощь!

 `IF /?`

Ты найдешь:

ERRORLEVEL (...) Указывает истинное условие, если последний запуск программы вернул код выхода, равный или превышающий указанное число.

So,

if errorlevel 1 ...

будет оценивать true для любого уровня ошибки >= 1.

Чтобы получить точное соответствие, используйте:

IF ERRORLEVEL 1 IF NOT ERRORLEVEL 2 ...

or

IF %ERRORLEVEL% == 1 ...

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

person LS_ᴅᴇᴠ    schedule 30.08.2013