如何为特定的运行进程运行循环检查vbs?还是缺少流程?

时间:2017-08-15 07:25:12

标签: vbscript

我正在运行以下VBScript(check.vbs):

Set service = GetObject ("winmgmts:")

For Each Process In Service.InstancesOf("Win32_Process")
    If Process.Name = "cmd.exe" Then
        WScript.Echo "cmd running"
        WScript.Quit
    End If
Next
CreateObject("WScript.Shell").Run("C:\system\file.bat")

此脚本将检查cmd.exe是否正在运行。如果它正在运行,则此脚本将显示消息“cmd running”。如果它未运行,则此脚本将打开批处理文件C:\system\file.bat

但我真正需要的是:当我运行此脚本check.vbs时,它需要继续检查,直到它发现cmd.exe没有运行。

只有在cmd.exe未运行时才需要运行file.bat - 在后台重复检查后(如任何循环程序)。

简单来说,在打开check.vbs时,脚本需要不断检查cmd.exe是否正在运行,一旦发现它未运行,就需要打开{ {1}}。

1 个答案:

答案 0 :(得分:0)

仍然不确定我是否正确理解了这个问题,但假设您确实需要一台监视并重新生成特定进程的监视器,您可以执行以下操作:

Set wmi = GetObject ("winmgmts://./root/civm2")

Sub CheckProcess(name, script)
    For Each p In wmi.ExecQuery("SELECT * FROM Win32_Process")
        If p.Name = name Then Exit Sub
    Next
    CreateObject("WScript.Shell").Run script
End Sub

Do
    CheckProcess "cmd.exe", "C:\system\file.bat"
    WScript.Sleep 100
Loop