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执行时,它有何不同。?
答案 0 :(得分:4)
使用
cmd /V:ON /c dir c:\ERt & echo !ERRORLEVEL!
以cmd /V:ON
启动的新命令进程仅执行命令dir c:\ERt
然后关闭,第二个命令echo !ERRORLEVEL!
由当前命令进程执行,在该进程上未启用延迟扩展。 / p>
命令行
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!
现在&
运算符被转义,因为当前命令进程被解释为文字字符,因此整行都是在新命令进程删除的符号字符^
的情况下执行的。