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

标签 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

我需要在错误级别 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

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

最佳答案

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

如果你足够耐心,等待半个小时,你就会看到这个消息框。事实上,当 ping 成功时你也会看到它,因为调用 wscript 命令的行是无条件执行的。如果您有多个命令只想在错误级别 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

关于batch-file - 尝试从批处理文件运行VBS MsgBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40352683/

相关文章:

java - 尝试根据单独的变量设置不同名称的变量

用于创建本地帐户并添加到管理员组的 VBScript 用于在注销/登录之前工作以测试新创建的帐户 :

javascript - 如何从 VB scdript 中的 url 中删除属性

linux - 需要简单 bash 脚本的帮助

java - Minecraft - Bukkit socket

windows - 如何将 perl 脚本中设置的环境变量导出到批处理 shell?

java - 使用不同的构建文件启动 java Eclipse headless 构建

Windows .BAT 将所有匹配掩码的目录从目录 A 移动到目录 B

vbscript - 本主题是关于用于从文件读取结果的 VBscript

terminal - icmp_seq 的请求超时