Как устанавливается этот уровень ошибки? - PullRequest
1 голос
/ 09 марта 2012

Я мало работал с DOS, так как в Unix всегда были сценарии оболочки, которые были более мощными. Первый раз я работаю в Windows и не очень разбираюсь в сценарии DOS / Batch.

Я пытался написать небольшой скрипт для перезагрузки удаленного компьютера. Делая скрипт более сложным, я узнал о среде var% ERRORLEVEL%, которая является своего рода кодом возврата из последней команды run.

В Unix, если команда выполняется, но не выдает желаемого результата или сообщения об ошибке, код ошибки не равен нулю. Как я пытаюсь удаленного выключения и предоставления хоста, который не существует в сети. Он говорит, что «Сетевой путь не найден», но% ERRORLEVEL% по-прежнему равен нулю. Вот и весь смысл задавать этот вопрос.

Нужно ли мне захватывать что-то другое, кроме% ERRORLEVEL%, так как Ноль предназначен для выполнения успешной команды, и он не изменяет% ERRORLEVEL% при выдаче «Сетевой путь не найден», что я должен захватить, чтобы получить это право?

shutdown command I am using: 

shutdown -r -f -t %DELAYOF% -m \\%COMPNAME% -c %COMMENT%

Когда я даю недопустимое значение, равное% COMPNAME%, появляется сообщение «сетевой путь не найден», но% EERORLEVEL% не изменяется.

Ответы [ 2 ]

1 голос
/ 10 марта 2012

Ответ на вашу проблему - уровень ошибки состоит в том, что% compname% не является переменной среды, однако% computername% равно.

Попробуйте это: (не проверено)

shutdown -r -f -t %DELAYOF% -m \\%COMPUTERNAME% -c %COMMENT%

Если это не то, что вы ищете, пожалуйста, опубликуйте свой сценарий, чтобы мы могли взглянуть на него, по крайней мере на части, относящиеся к этому фрагменту.

Что касается% ERRORLEVEL%, попробуйте поставить это перед вашей командой

verify >nul
shutdown -r -f -t %DELAYOF% -m \\%COMPNAME% -c %COMMENT%
echo.%ERRORLEVEL%>yourfile.txt

verify >nul оставит ваш уровень ошибки пустым, чтобы вы не могли перехватить его откуда-либо еще.

0 голосов
/ 09 марта 2012

Для netname не найдено, он должен вернуть ERRORLEVEL, равный 53. По крайней мере, мой тест на Win7 делает.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...