应该使用什么 VBScript 命令来告诉它不执行任何操作?

应该使用什么 VBScript 命令来告诉它不执行任何操作?

应该使用什么命令来代替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 秒。

SS64 中 WScript Sleep 的参考

答案2

您想要的命令是DoEvents,但这个概念在 VBScript 中不存在,而且对您的情况也无济于事。

CPU 使用率高的原因在于循环不断重复执行任务。因此,它会反复查询 wordpad 是否正在运行,如果运行,循环不会结束,因此它会继续执行。

您要做的是限制脚本在执行过程中等待一段时间。

所以你的Do Nothing情况会是这样的:

starttime = timer
do: loop until timer = starttime + 1

可以+ 1替换为任意数字,它会等待那么多时间。例如,如果您只想每 10 秒检查一次,请将其更改为+ 10

相关内容