目录
【需求的背景】
需要一个vbs脚本来监测进程(例如:notepad.exe)是否存在。需要间隔一段时间来检查该进程是否存在。如果进程存在,脚本应该不执行任何操作。如果进程不存在,脚本会启动该程序。
以下是一个vbs脚本【mon-proc.vbs】的示例,它可以监测进程是否存在:
''
'' author: boomwxsoft/boomworks
'' 15:44 2023/4/13
''
'' usage: need two parameters, ex: "TimingExecutor.exe" "C:\TmExec\TimingExecutor.exe"
''
Dim objArgs
Set objArgs = WScript.Arguments
Dim processName
Dim processPath
processName = objArgs.Item(0)
processPath = objArgs.Item(1)
Set WshShell = WScript.CreateObject("WScript.Shell")
If Not ProcessExists(processName) Then
WshShell.Run processPath
End If
Function ProcessExists(processName)
Dim objWMIService, colProcesses, objProcess
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colProcesses = objWMIService.ExecQuery("Select * from Win32_Process Where Name ='" & processName & "'")
If colProcesses.Count > 0 Then
ProcessExists = True
Else
ProcessExists = False
End If
End Function
在上面这个示例中,脚本会检查是否有名为“参数1”的进程正在运行。如果没有,则会打开“参数2”的程序(例如:notepad.exe)。
【如何循环监测】
需要上面的vbs脚本和“定时执行专家”配合使用。可以使用“定时执行专家”的【执行脚本或程序】来执行vbs脚本;触发器设置【间隔】触发器,本例子采用间隔5分钟方式触发vbs脚本任务的执行。
设置步骤:
1、新建”定时执行专家“的【执行脚本和程序】任务,选择上面的脚本文件【mon-proc.vbs】;
2、填写两个参数,参数间用空格隔开;
3、设置【间隔时间】触发器,例如:5分钟,见下图。
(图1-1,定时执行专家 - 执行vbs脚本)
请注意,你需要将“notepad.exe”替换为你想要监测的进程的名称。
// END