我正在尝试以下命令,并希望退出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
请告诉我获取当前命令退出代码的方法。
答案 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
答案 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”退出代码。
我很想知道如果我从本地的同一台机器的命令提示符运行它无法正常工作。