ERRORLEVEL条件

时间:2018-04-17 16:33:12

标签: batch-file conditional-statements errorlevel

这个逻辑是不是要向'mailerror'子程序发送0和1错误级别,如果它们是0或1错误就退出?

IF %ERRORLEVEL% NEQ 0 (
    IF %ERRORLEVEL% NEQ 1 (   
    SET BODY="exit error code from Backup of RAD file = %ERRORLEVEL%."
    goto mailerror
    )
 ) ELSE (
 EXIT
 )

2 个答案:

答案 0 :(得分:0)

首先,您不需要所有这些括号。此外,您目前正在测试错误级别0,然后1,但您的else位置错误,因此errorlevel 1子句将不执行任何操作(不退出):< / p>

这将在errorlevel 0errorlevel 1

上测试和操作退出
@echo off
if %errorlevel% neq 0 if %errorlevel% neq 1 (
set BODY="exit error code from Backup of RAD file = %errorlevel%."
echo %body%
goto mailerror
)
exit
:mailerror
echo %BODY%
echo do something else..

但看到你想要做除错误级别01以外的任何事情,你只需设置%errorlevel%大于1(换句话说不是0 }或1):

@echo off
if %errorlevel% GTR 1 (
set BODY="exit error code from Backup of RAD file = %errorlevel%."
goto mailerror
)
exit
:mailerror
echo %BODY%
echo do something else..

根据@Stephan的评论。一些罕见的程序会产生负的错误级别,如果是第一个选项的情况,或者这样:

@echo off
if %errorlevel% GTR 1 if %errorlevel% lss 0 (
set BODY="exit error code from Backup of RAD file = %errorlevel%."
goto mailerror
)
exit
:mailerror
echo %BODY%
echo do something else..

答案 1 :(得分:0)

如果错误为Exit0,您的问题短语建议您1

IF %ERRORLEVEL% GEQ 0 IF %ERRORLEVEL% LEQ 1 EXIT /B
REM MAILERROR CODE BELOW HERE