【问题标题】:How execute a command in batch-file if errorlevel is not zero?如果错误级别不为零,如何在批处理文件中执行命令?
【发布时间】:2015-04-18 07:42:28
【问题描述】:

我创建了一个简单的批处理文件,可以让我连接到互联网。
我是这样做的——如果连接成功,则使用 VBscript 显示一条消息,说明“连接成功”,如果连接未建立,则显示一条消息,说明“连接失败”。我使用 if-else 语句和 errorlevel 命令进行了此操作,但我无法使用 'errorlevel == 1' 命令显示失败消息。我的意思是,如果连接过程中出现错误,则会显示成功消息而不是失败消息。

这是我的批处理文件中的代码。

rasdial "TATA PHOTON+" internet

@echo off
if ERRORLEVEL == 0 (echo MSGBOX "Connection successfully established to TATA PHOTON+" > %temp%\TEMPmessage.vbs
call %temp%\TEMPmessage.vbs
del %temp%\TEMPmessage.vbs /f /q)
else if ERRORLEVEL == 1 (echo MSGBOX "ERROR: Unable to establish connection" > %temp%\TEMPmessage.vbs
call %temp%\TEMPmessage.vbs
del %temp%\TEMPmessage.vbs /f /q
)

【问题讨论】:

    标签: windows batch-file vbscript cmd


    【解决方案1】:

    线

    if errorlevel == 0 do-something
    

    不是有效的语法。根据一些快速测试,命令处理器似乎将其重新解释为

    if errorlevel 0 do-something
    

    这意味着“如果错误级别是至少 0 做某事”。

    相反,我推荐

    if %ERRORLEVEL% EQU 0 do-something
    

    使用百分号版本可以测试是否相等,并且还可以正确处理返回值为负的情况。

    【讨论】:

      【解决方案2】:

      if errorlevel == 1 将字符串 errorlevel 与字符串 1 进行比较,由于某种原因发现它们不匹配。

      你需要一个

      if %errorlevel% == 1 dosomething
      

      if errorlevel 1 dosomething
      

      如果errorlevel 为1或大于1

      ,第二个方法将执行dosomething

      因此,if errorlevel 0 dosomething总是做某事。(但有一些方法可以将 `errorlevel 设置为负数。这通常不会遇到)

      【讨论】:

        【解决方案3】:

        尝试类似的方法:

        rasdial "TATA PHOTON+" internet
        @echo off
        IF %ERRORLEVEL% EQU 0 (
            Goto :sucess
        ) else (
            GoTo :Fail
        )
        ::****************************************************************************************
        :sucess
        (echo MSGBOX "Connection successfully established to TATA PHOTON+",VbInformation,"Connection successfully established to TATA PHOTON+" > %temp%\TEMPmessage.vbs
        call %temp%\TEMPmessage.vbs
        del %temp%\TEMPmessage.vbs /f /q
        )
        Exit /b
        ::****************************************************************************************
        :Fail
        (echo MSGBOX "ERROR: Unable to establish connection",vbCritical,"ERROR: Unable to establish connection" > %temp%\TEMPmessage.vbs
        call %temp%\TEMPmessage.vbs
        del %temp%\TEMPmessage.vbs /f /q
        )
        Exit /b
        ::****************************************************************************************
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-01-21
          • 2018-12-25
          • 2013-07-23
          • 2011-08-27
          • 2012-01-26
          • 2020-08-13
          • 1970-01-01
          • 2021-02-27
          相关资源
          最近更新 更多