errorlevel работает на одном сервере, но не на другом

У меня есть два сервера 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: . Может ли кто-нибудь помочь в этом, пожалуйста?

1 ответ

Проверьте IF Помогите!

 `IF /?`

Ты найдешь:

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

Так,

if errorlevel 1 ...

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

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

IF ERRORLEVEL 1 IF NOT ERRORLEVEL 2 ...

или же

IF %ERRORLEVEL% == 1 ...

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

Другие вопросы по тегам