使用几台运行Windows Server 2008的服务器,注意到我的批处理脚本不再失败。
简而言之,任何检查ERRORLEVEL的语句似乎都会通过,无论您给出什么退出码。 例如,在新的命令窗口中:
if ERRORLEVEL 1 echo hello
不应该打印任何东西,因为之前的退出必须是0.那么,这在我的Windows 7桌面上工作正常,但不是在这些服务器上。 这基本上打破了我所有的脚本。
是否有任何修补程序更新或可能已经引入到服务器的其他更改来实现此目的? 我不是唯一拥有这些服务器pipe理权限的人,但在指责指责之前需要更多信息!
离开IF ERRORLEVEL 。 以下是更可靠(和可预测):
REM *** do something %SystemRoot%\System32\robocopy.exe blah blah set /a RC=%ERRORLEVEL% REM *** now use the RC variable, which won't be interferred with if %RC% == 0 goto XYZ if %RC% == 1 goto ABC
我很欣赏你试图避免重写,但我绝对推荐以上(或PowerShell,当然!)。