我正在运行以下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}}。
答案 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