我没有使用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%未被更改。
答案 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命令。