如果errorlevel不为零,如何在批处理文件中执行命令?

时间:2015-04-18 07:42:29

标签: windows batch-file vbscript cmd

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

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

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
)

3 个答案:

答案 0 :(得分:2)

这条线

if errorlevel == 0 do-something

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

if errorlevel 0 do-something

表示“如果errorlevel 至少 0做某事”。

相反,我建议

if %ERRORLEVEL% EQU 0 do-something

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

答案 1 :(得分:1)

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

你需要

if %errorlevel% == 1 dosomething

if errorlevel 1 dosomething

如果errorlevel为1 或大于1 ,则第二种方法将执行 dosomething

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

答案 2 :(得分:1)

尝试类似的东西:

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
::****************************************************************************************