首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ERRORLEVEL条件

ERRORLEVEL条件
EN

Stack Overflow用户
提问于 2018-04-17 16:33:12
回答 2查看 3.7K关注 0票数 0

这个逻辑不应该将0和1错误级别发送到“mailerror”子例程,如果它们是0或1错误,那么简单地退出吗?

代码语言:javascript
复制
IF %ERRORLEVEL% NEQ 0 (
    IF %ERRORLEVEL% NEQ 1 (   
    SET BODY="exit error code from Backup of RAD file = %ERRORLEVEL%."
    goto mailerror
    )
 ) ELSE (
 EXIT
 )
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-18 08:54:02

首先,你不需要所有这些括号。此外,您目前正在测试错误级别的0,然后是1,但是您的else位于错误的位置,因此errorlevel 1子句将什么也不做(不退出):

这将在errorlevel 0errorlevel 1上测试和操作退出。

代码语言:javascript
复制
@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 (换句话说,不是01):

代码语言:javascript
复制
@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的评论,一些罕见的程序会产生一个负的错误级别,如果是这样的话,第一个选项就可以了,或者这样:

代码语言:javascript
复制
@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..
票数 0
EN

Stack Overflow用户

发布于 2018-04-18 09:33:37

如果错误是01,那么您的问题短语表示您想要使用1

代码语言:javascript
复制
IF %ERRORLEVEL% GEQ 0 IF %ERRORLEVEL% LEQ 1 EXIT /B
REM MAILERROR CODE BELOW HERE
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49883254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档