2012-03-09 2 views
1

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

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

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

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

shutdown command I am using: 

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

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

+0

Какова команда, которую вы выполняете (перед тестированием ERRORLEVEL)? – hometoast

+0

Какая версия Windows? –

+0

Дважды проверьте, что переменная среды с именем ERRORLEVEL не назначена (если она% ERRORLEVEL% не будет работать). Вы можете сделать это с помощью команды SET без аргументов, которые будут отображать все текущие переменные среды. –

ответ

1

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

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

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 будет держать ваш Errorlevel пустым, так что вы не захватить его где-то в другом месте.

0

На имя сети не найдено, он должен вернуть ERRORLEVEL из 53. По крайней мере, мой тест на Win7 делает.

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

Смежные вопросы