这个逻辑不应该将0和1错误级别发送到“mailerror”子例程,如果它们是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
)发布于 2018-04-18 08:54:02
首先,你不需要所有这些括号。此外,您目前正在测试错误级别的0,然后是1,但是您的else位于错误的位置,因此errorlevel 1子句将什么也不做(不退出):
这将在errorlevel 0和errorlevel 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..但是,考虑到除了错误级别的0和1之外,您还想做任何其他事情,那么只需设置%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..发布于 2018-04-18 09:33:37
如果错误是0或1,那么您的问题短语表示您想要使用1。
IF %ERRORLEVEL% GEQ 0 IF %ERRORLEVEL% LEQ 1 EXIT /B
REM MAILERROR CODE BELOW HEREhttps://stackoverflow.com/questions/49883254
复制相似问题