应该使用什么命令来代替Do nothing
下面的命令,以便告诉它什么都不做?如果我将其留空,WmiPrvSE.exe
将导致 CPU 使用率过高。
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Do
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'wordpad.exe'")
If colProcesses.Count = 0 Then
`Do nothing`
Else
Wscript.Echo "wordpad.exe is running."
End If
Loop
答案1
将“if”留空 - 脚本使用高 CPU,因为它完成“if”检查,然后一遍又一遍地快速运行,因为它没有被告知停止,并且您的 CPU 正在尽快完成指令。
我认为您正在寻找的是sleep
命令:
If colProcesses.Count = 0 The
WScript.Sleep(10000)
Else
这个数字是毫秒(1000 = 1 秒),表示进程暂停的时间。在上面的例子中,它暂停了 10 秒。
答案2
您想要的命令是DoEvents
,但这个概念在 VBScript 中不存在,而且对您的情况也无济于事。
CPU 使用率高的原因在于循环不断重复执行任务。因此,它会反复查询 wordpad 是否正在运行,如果运行,循环不会结束,因此它会继续执行。
您要做的是限制脚本在执行过程中等待一段时间。
所以你的Do Nothing
情况会是这样的:
starttime = timer
do: loop until timer = starttime + 1
可以+ 1
替换为任意数字,它会等待那么多时间。例如,如果您只想每 10 秒检查一次,请将其更改为+ 10
。