Уровень ошибки всегда 0 в командном файле
Я пытаюсь настроить скрипт автоматического развертывания из образа Windows. Во время тестирования я сталкиваюсь с проблемой, касающейся части, которая пытается перехватить, если что-то пошло не так с определенными командами.
Вместо остановки сценария сценарий продолжает думать, что он успешен, и просто продолжает переходить к следующей команде, даже если предыдущая команда обнаружила ошибку.
Я попытался добавить else
к разделам, чтобы увидеть, что пошло не так, и я заметил, что уровень ошибки был равен 0 после выполнения команды. Если только эхо не устанавливает уровень ошибки. Вот соответствующий раздел кода.
Изменить: я выделил основную причину для этого раздела кода. Я также избавился от шага imagex, чтобы уменьшить сложность и переменные.
@echo off setlocal set /p i_understand="Begin failure test? (Y/N) " if "%i_understand%"=="Y" ( rem Deliberately causing diskpart to fail by using a nonexistent file. diskpart /s doesnotexist.txt if %ERRORLEVEL% NEQ 0 ( echo Diskpart failed and caught. endlocal exit /b 1 ) echo Diskpart failed but not caught. Error level is %ERRORLEVEL% ) else ( echo Variable i_understand is %i_understand% echo Aborting. )
Если я уменьшу код до приведенного ниже, уровень ошибки будет установлен правильно:
@echo off setlocal rem Deliberately causing diskpart to fail by using a nonexistent file. diskpart /s doesnotexist.txt if %ERRORLEVEL% NEQ 0 ( echo Diskpart failed and caught. endlocal exit /b 1 )
Идея состояла в том, чтобы отобразить предупреждения, а затем получить окончательный ответ с большой буквы «Y» для «Да, я знаю, что этот сценарий опасен, и я знаю, что я делаю». прежде чем приступить к любому другому вводу, интерпретируемому как отказ по безопасности.
Конечно, многие вещи могут пойти не так во время процесса. Возможно, подключение к сетевому диску оборвано, что-то делает целевой диск недоступным или что-то еще непредвиденное приводит к сбою одной из команд. В этом случае скрипт останавливает все, что он делает, и оставляет журнал вывода консоли до этого момента.
Естественно, во время моих тестов я столкнулся с кучей сбоев из-за неверно настроенных переменных, но скрипт продолжал работать, как будто ничего не происходило.
0 ответов на вопрос
Похожие вопросы
-
12
Почему папка / winsxs становится такой большой и ее можно уменьшить?
-
2
Повышенные привилегии для запуска приложений в Windows?
-
14
PDF Viewer в Windows
-
-
7
Какие службы Windows можно безопасно отключить?
-
8
Firefox PDF плагин для просмотра PDF в браузере на Windows
-
1
Windows теряет макет экрана
-
1
Есть ли способ предотвратить установку / обновление, чтобы засорять мой жесткий диск загадочными пап...
-
1
Как я могу получить доступ к принтеру Windows Vista из Ubuntu по сети?
-
6
Просмотр журнала в Windows
-
3
Фоновая проблема Windows с двумя экранами