如何在变量中存储ERRORLEVEL?

Max*_*and 3 batch-file variable-assignment errorlevel windows-7

我正在尝试将ERRORLEVEL环境变量存储到本地批处理变量中.但它总是证明是0.

CALL foo.exe
SET LEVEL=%ERRORLEVEL%
IF ERRORLEVEL 1 (
  SET /A ERRORCOUNT=ERRORCOUNT+1
) ELSE (
  SET /A OK=OK+1
)
ECHO/ >> logtemp.txt
ECHO ** EXIT %LEVEL% *******************************
Run Code Online (Sandbox Code Playgroud)

我试过ECHO %ERRORLEVEL%但它总是打印0出来.

foo.exe正在生成错误,可以ECHO %ERRORLEVEL%从命令提示符看到它并ERRORCOUNT正确更新.

jeb*_*jeb 7

我想你的问题不是错误级别,而是你的foo.exe.

使用errorlevel的简单测试有效.
(call)将errorlevel设置为1

(call)
SET LEVEL=%ERRORLEVEL%
IF ERRORLEVEL 1 (
  SET /A ERRORCOUNT=ERRORCOUNT+1
) ELSE (
  SET /A OK=OK+1
)
ECHO/ >> logtemp.txt
ECHO ** EXIT %LEVEL% *******************************
Run Code Online (Sandbox Code Playgroud)

第二个样本:

if 1==1 (
  call set level=%%errorlevel%%
  call echo %%level%%
  call echo %%errorlevel%%
  echo %errorlevel%
)
Run Code Online (Sandbox Code Playgroud)

或者延迟扩张

setlocal EnableDelayedExpansion
if 1==1 (
    set level=!errorlevel!
    echo !level! !errorlevel!
)
Run Code Online (Sandbox Code Playgroud)