如何在变量中存储ERRORLEVEL?

时间:2013-10-10 16:03:04

标签: batch-file windows-7 variable-assignment errorlevel

我正在尝试将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% *******************************

我尝试ECHO %ERRORLEVEL%,但它也始终打印0

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

2 个答案:

答案 0 :(得分:7)

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

带有错误级别的简单测试有效 (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% *******************************

第二个样本:

if 1==1 (
  call set level=%%errorlevel%%
  call echo %%level%%
  call echo %%errorlevel%%
  echo %errorlevel%
)

或延迟扩张

setlocal EnableDelayedExpansion
if 1==1 (
    set level=!errorlevel!
    echo !level! !errorlevel!
)

答案 1 :(得分:1)

ERRORLEVEL%ERRORLEVEL%不一样(请参阅http://blogs.msdn.com/b/oldnewthing/archive/2008/09/26/8965755.aspx)。

该行

IF ERRORLEVEL 1

应该是

IF %ERRORLEVEL% EQU 1

产生渴望的答案。