2012-03-09 35 views
1

我还没有和DOS一起工作过,因为在Unix中总是有shell脚本更强大。我第一次在Windows上工作,并且不太了解DOS/Batch脚本。如何设置此错误级别?

我正在尝试编写一个小脚本来重新启动远程计算机。 在制作脚本时,我了解了var%ERRORLEVEL%这个环境,它是最后一个ran命令返回的代码。

在Unix中,如果命令运行但不产生期望结果或某些错误消息,则错误代码不为零。 因为我正在尝试远程关机并提供网络中不存在的主机。它表示“找不到网络路径”,但%ERRORLEVEL%仍然为零。问这个问题的重点是什么?

我是否需要捕获除%ERRORLEVEL%之外的其他内容,因为Zero指定要运行成功命令,并且在抛出“网络路径未找到”时不会更改%ERRORLEVEL%我应该捕获什么以获取此权限?

shutdown command I am using: 

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

当我给值无效,于%COMPNAME%,它提示说“找不到网络路径”,但%EERORLEVEL%不被改变。

+0

你正在执行的命令是什么(在测试ERRORLEVEL之前)? – hometoast 2012-03-09 19:07:07

+0

哪个版本的Windows? – 2012-03-10 04:29:07

+0

仔细检查名为ERRORLEVEL的环境变量未得到分配(如果它是%ERRORLEVEL%将不起作用)。你可以用SET命令做这个,不带任何参数,它将显示所有当前的环境变量。 – 2012-03-10 04:31:29

回答

1

问题的答案 - 错误级别是%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

在没有找到网络名称的情况下,它应该返回ERRORLEVEL 53.至少我在Win7上的测试确实如此。

确保错误级别的测试紧接在关机命令之后。