如何暂停vbscript执行?

And*_*jeŭ 13 vbscript

如何从内部暂停执行脚本?像Sleep WinAPI这样的功能?

Mac*_*y M 19

下面的脚本片段创建一个暂停子,用于显示字符串中的暂停文本并等待Enter键.z可以是任何东西.如果需要多个用户干预,则需要暂停.我只是将它保存在我的标准脚本模板中.

Pause("Press Enter to continue")

Sub Pause(strPause)
     WScript.Echo (strPause)
     z = WScript.StdIn.Read(1)
End Sub
Run Code Online (Sandbox Code Playgroud)


Ode*_*ded 17

您可以使用WScript对象并Sleep在其上调用方法:

Set WScript = CreateObject("WScript.Shell")
WScript.Sleep 2000 'Sleeps for 2 seconds
Run Code Online (Sandbox Code Playgroud)

另一种方法是导入和使用WinAPI的函数直接(仅适用于VBA,感谢@Helen):

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sleep 2000
Run Code Online (Sandbox Code Playgroud)

  • @GordThompson - 它取决于你所在的脚本上下文. (5认同)
  • 注意:您无法从 VBScript 运行 WinAPI 函数。您的第二个示例仅适用于 VB/VBA。 (2认同)
  • 我只是试过了,似乎`Set WScript = ...`语句是多余的。仅一行`WScript.Sleep 2000`对我有用(就像`WScript.Echo`一直一样)。 (2认同)

Ser*_*nns 10

使用'Enter'最好使用ReadLine()或Read(2),因为键'Enter'会生成2个符号.如果用户输入任何文本,则即使使用Read(2),也会跳过Pause().所以ReadLine()更好:

Sub Pause()
    WScript.Echo ("Press Enter to continue")
    z = WScript.StdIn.ReadLine()
End Sub
Run Code Online (Sandbox Code Playgroud)

更多示例请参阅http://technet.microsoft.com/en-us/library/ee156589.aspx

  • 我知道.但我指出,接受的答案有问题.我想在接受的答案中添加评论,但我没有足够的声誉.所以我发布了另一个答案 (8认同)
  • @PlasmaPower这个网站是关于找到同一问题的多个答案.当问到这个问题时,并不是每个可能的解决方案显然都存在.谢谢谢谢谢谢你补充另一个答案.谢尔盖这是一个很好的,可以接受的答案,而不是评论.+1 (2认同)