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
используется в качестве переменной среды.