%ERRORLEVEL%不起作用,包含单行上的多个命令

时间:2014-11-25 05:13:31

标签: windows batch-file command-line command command-prompt

我正在尝试以下命令,并希望退出process(%ERRORLEVEL%)。但它正在返回previous(last)执行的sample.exe退出代码结果。我想获得当前命令的退出代码。我的要求是在单行*(不是批处理脚本)*。

中执行多个命令

命令:

cmd /c sample.bat "test" > c:\ouput.log & echo %ERRORLEVEL% > c:\returnCode.log

我甚至尝试过使用“setlocal enableDelayedExpansion”,如下所示。仍然没有返回当前命令的退出代码

cmd /c setlocal enableDelayedExpansion & sample.bat "test" > c:\ouput.log & echo %ERRORLEVEL% > c:\returnCode.log

请告诉我获取当前命令退出代码的方法。

3 个答案:

答案 0 :(得分:5)

这应该有效:

cmd /V:ON /c sample.exe "test" > c:\ouput.log ^& echo !ERRORLEVEL! > c:\returnCode.log

/ V:ON开关与setlocal EnableDelayedExpansion具有相同的效果。有关详细信息,请键入:cmd /?

修改:修复了小错误,必须使用&转义^字符,否则echo !ERRORLEVEL!命令在cmd / V中执行:ON !!!

答案 1 :(得分:1)

cmd /c sample.exe "test" > c:\ouput.log & call echo %%ERRORLEVEL%% > c:\returnCode.log

应该适合你。查看与delayedexpansion

相关的无穷无尽的SO项目

答案 2 :(得分:0)

感谢您的回复。只有当我运行WMI类(Win32_Process)时,才能使用以下命令获取当前执行命令的退出代码。使用WMI客户端,我在远程计算机上执行以下命令,它正常工作,即能够在Retrun.txt中编写退出代码

命令: cmd / V:ON / c sample.bat“test”> c:\ Output.txt&回声!ERRORLEVEL! > C:\ Return.txt

但是如果我在同一个远程机器的命令提示符下运行相同的命令,它就会打印“!ERRORLVEL!”在Return.txt而不是“sample.bat”退出代码。

我很想知道如果我从本地的同一台机器的命令提示符运行它无法正常工作。