尝试从批处理文件运行VBS MsgBox

时间:2016-11-01 00:52:30

标签: batch-file vbscript ping

我有一个包含以下代码的批处理文件:

   @echo off

:START

ping 192.168.9.19 -n 1 -w 1800000 > nul 2>&1


if errorlevel 1   taskkill /F /IM excel.exe > nul 2>&1



Timeout /t 1 > nul 2>&1
@set errorlevel = 0

GOTO START

我需要在errorlevel 1上添加一行来打开一个vbs消息框MsgBox.vbs

我尝试添加以下行但它不起作用:

wscript "C:\Users\James.Jayesuria\Desktop\MsgBox.vbs" < nul 2>&1

我是这样添加的:

@echo off

:START

ping 192.168.9.19 -n 1 -w 1800000 > nul 2>&1


if errorlevel 1   taskkill /F /IM excel.exe > nul 2>&1
wscript "C:\Users\James.Jayesuria\Desktop\MsgBox.vbs"


Timeout /t 1 > nul 2>&1
@set errorlevel = 0

GOTO START

如果有人可以帮助我更正代码以便msgbox弹出,我将不胜感激。当我仅使用该代码行运行bat文件时,会弹出错误消息,但是当我尝试将其添加到网络代码时,它不起作用

1 个答案:

答案 0 :(得分:2)

参数-w 1800000告诉ping命令在无法到达主机时失败之前等待1800000毫秒(= 30分钟)。

如果您足够耐心并等待半小时,您将看到消息框。事实上,当ping成功时你也会看到它,因为调用wscript命令的行是在没有条件的情况下执行的。如果您只想在条件errorlevel 1上执行多个命令,则必须将它们包含在括号中。

使用

修改代码
  • 仅在ping中使用10秒的超时
  • 仅在ping失败时显示消息框
  • 您不需要重置错误级别。这会自动发生
  • 在ping尝试之间使用等待10秒钟来节省计算资源

当你无法访问ip时执行它,你必须等待10秒,然后才能显示消息框。

@echo off

:START

REM Try to ping with timeout of 10 seconds
ping 192.168.9.19 -n 1 -w 10000 > nul 2>&1

REM When ping fails, kill excel and show messagebox
if errorlevel 1 ( 
    taskkill /F /IM excel.exe > nul 2>&1
    wscript "C:\Users\James.Jayesuria\Desktop\MsgBox.vbs"
)

REM Wait 10 seconds between ping attempts
Timeout /t 10 > nul 2>&1

GOTO START