cmd /V:ON /c dir c:\<some non existing directory> & echo %ERRORLEVEL%
Volume in drive C is PC COE Volume Serial Number is 9C37-D0B7
Directory of c:\
File Not Found
0
让我们使用 !扩展ERRORLEVEL(启用延迟扩展)
cmd /V:ON /c dir c:\ERt & echo !ERRORLEVEL!
Volume in drive C is PC COE
Volume Serial Number is 9C37-D0B7
Directory of c:\
File Not Found
!ERRORLEVEL!
它打印 !ERRORLEVEL!。
当我使用 WMI win32_process create 命令运行命令并使用 !ERRORLEVEL 返回正确的错误时,这确实工作正常!多变的
在 cmd 提示符下执行和使用 WMI win32_process 执行时有什么区别?
最佳答案
通过使用
cmd /V:ON /c dir c:\ERt & echo !ERRORLEVEL!
以
cmd /V:ON
开始的新命令进程只执行命令 dir c:\ERt
然后关闭,第二个命令 echo !ERRORLEVEL!
由当前命令进程执行,在该进程上未启用延迟扩展。命令行
cmd /V:ON /c "dir c:\ERt & echo !ERRORLEVEL!"
在退出此命令进程之前,必须使用
dir c:\ERt
AND echo !ERRORLEVEL!
在新命令进程中运行。在新命令进程中执行的整个命令行周围的双引号有所不同。
如果命令行周围没有双引号要在新命令进程中执行,当前命令进程会将带有两个命令的行解释为键入时
cmd /V:ON /c dir c:\ERt
echo !ERRORLEVEL!
也可能是
cmd /V:ON /c dir c:\ERt ^& echo !ERRORLEVEL!
现在
&
运算符被转义为当前命令进程被解释为文字字符,因此整行执行时插入符号 ^
被新命令进程删除。关于windows - cmd提示符和win32_process上ERRORLEVEL延迟扩展的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41733606/