如何设置此错误级别?

时间:2012-03-09 19:01:43

标签: windows batch-file

我没有使用DOS,因为在Unix中总是有shell脚本功能更强大。我第一次在Windows上工作,对DOS / Batch脚本知之甚少。

我正在尝试编写一个小脚本来重启远程计算机。 在使脚本变得复杂的同时,我了解了环境var%ERRORLEVEL%,它是上一次运行命令的返回代码。

在Unix中,如果命令运行但没有产生所需的结果或一些错误消息,则错误代码不为零。 因为我正在尝试远程关机并提供网络中不存在的主机。它说“未找到网络路径”但%ERRORLEVEL%仍为零。提出这个问题至关重要。

我是否需要捕获除%ERRORLEVEL%以外的其他内容,因为Zero被指定为运行成功的命令,并且在抛出“未找到网络路径”时它没有更改%ERRORLEVEL%我应该捕获什么来实现这一目标?< / p>

shutdown command I am using: 

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

当我给%COMPNAME%提供无效值时,它会提示“未找到网络路径”,但%EERORLEVEL%未被更改。

2 个答案:

答案 0 :(得分: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会将您的错误级别设置为空白,以便您不会从其他位置捕获它。

答案 1 :(得分:0)

在未找到网络名称时,它应该返回53的ERRORLEVEL。至少我对Win7的测试确实如此。

确保errorlevel 的测试紧跟 shutdown命令。