我认为我对ERRORLEVEL与%ERRORLEVEL%有基本的了解,但是!ERRORLEVEL!使我困惑。
我正在制作一个脚本,该脚本调用可执行文件,然后任务列表以查看其是否正在运行,然后通过taskkill将其杀死,然后尝试输出错误级别并针对其他exe重复此操作,而我意识到我真的不明白批处理中的错误级别。
我将变量设置为!errorlevel!然后在回显中使用不带引号的变量,并且在设置后出现错误时,变量从一个uint16更改为另一个uint16,例如它引用了真实的变量而不是副本。我要复制。有人可以解释这些家伙之间的区别吗?
更新:这是我正在处理的代码段。
for %%P in (%executableList%) do (
echo ----------------------------------------------------------------------------------
set exeErrorlevel=0
set running=false
start %%~fP
set exeErrorlevel=!ERRORLEVEL!
rem for debugging purposes
echo %%~nP%%~xP older errorlevel %ERRORLEVEL%
echo %%~nP%%~xP newer errorlevel !ERRORLEVEL!
echo before tasklist running var is : !running!
tasklist /FI "IMAGENAME eq %%~fP" | find /I /N /C "%%~fP" >nul && set running=true
echo after tasklist is running var is: !running!
if !running! equ true (
echo %%~nP%%~xP Program is running
taskkill /F /IM %%~nP%%~xP /T …Run Code Online (Sandbox Code Playgroud)