【问题标题】: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
::****************************************************************************************