如何在vbscript中设置延迟
如何在vbscript中设置延迟?
WScript.Sleep(100)
不适用于Windows XP,Vista。
为此工作(XP)。
创build一个新文件,称之为test.vbs。 把它放在里面。
WScript.Sleep 1000 MsgBox "TEST"
运行它,注意显示消息框之前的延迟。
请注意,数字以毫秒为单位,因此1000是1秒。
如果您试图在VBScript中模拟睡眠延迟,但WScript不可用(例如:您的脚本是从Microsoft的BGInfo工具调用的),请尝试以下方法。
下面的例子将延迟到从指令处理的那一刻起,直到10秒。
Dim dteWait dteWait = DateAdd("s", 10, Now()) Do Until (Now() > dteWait) Loop
如果是VBScript,应该是
WScript.Sleep 100
如果是JavaScript
WScript.Sleep(100);
时间以毫秒为单位 Wscript.Sleep 1000导致1秒的睡眠。
下面这行会让你的脚本睡5分钟。
WScript.Sleep 5*60*1000
请注意,传递给睡眠呼叫的值以毫秒为单位。
这里的很多答案都假设你正在Windows脚本宿主中运行你的VBScript(通常是wscript.exe
或者cscript.exe
)。 如果你得到像“ variables未定义:”WScript“的错误,那么你可能不是。
只有在Windows脚本宿主下运行WScript对象时,如果您正在另一个脚本宿主(如Internet Explorer)下运行(并且您可能没有意识到自己是否像HTA一样),那么它就是可用的不会自动提供。
微软的嗨,脚本专家! 博客有一篇文章进入这个主题如何在HTA中临时暂停脚本? 其中他们使用VBScript setTimeout
来创build一个计时器来模拟一个睡眠,而不需要使用CPU Hogging循环等。
使用的代码是这样的:
<script language = "VBScript"> Dim dtmStartTime Sub Test dtmStartTime = Now idTimer = window.setTimeout("PausedSection", 5000, "VBScript") End Sub Sub PausedSection Msgbox dtmStartTime & vbCrLf & Now window.clearTimeout(idTimer) End Sub </script> <body> <input id=runbutton type="button" value="Run Button" onClick="Test"> </body>
查看链接的博客文章的完整解释,但本质上,当button被点击时,它创build一个计时器,从现在开始发射5,000毫秒,当它触发运行VBScript子例程称为“PausedSection”清除计时器,并运行任何你想要的代码。
这是另一种select:
Sub subSleep(strSeconds) ' subSleep(2) Dim objShell Dim strCmd set objShell = CreateObject("wscript.Shell") 'objShell.Run cmdline,1,False strCmd = "%COMSPEC% /c ping -n " & strSeconds & " 127.0.0.1>nul" objShell.Run strCmd,0,1 End Sub
睡眠时间函数以毫秒(ms)为单位
如果你想要3分钟,那就这样做:
WScript.Sleep(1000 * 60 * 3)
更好的使用定时器
Sub wait (sec) dim temp temp=timer do while timer-temp<sec loop end Sub
以下是@ user235218提供的解决scheme的更新,允许您指定所需的毫秒数。
注意:-n选项是重试次数,-w是ping的超时时间(以毫秒为单位)。 我select了127.255.255.254地址,因为它在回送范围内,ms窗口不响应。
我也怀疑这将提供毫秒的准确性,但在另一个笔记我试过它在一个应用程序使用MS脚本控制,而内置睡眠functionlocking接口此方法没有。
如果有人能够提供解释为什么这个方法没有locking接口,我们可以使这个答案更完整。 在用户线程中运行的两个睡眠函数。
Const WshHide = 0 Const WAIT_ON_RETURN = True Sub Sleep(ByVal ms) Dim shell 'As WScript.Shell If Not IsNumeric(ms) Then _ Exit Sub Set shell = CreateObject("WScript.Shell") Call shell.Run("%COMSPEC% /c ping -n 1 -w " & ms & " 127.255.255.254 > nul", WshHide, WAIT_ON_RETURN) End Sub
这是我的解决scheme。 使用由第三方程序运行的脚本,没有声明WScript并且不允许导入。
Function MySleep(milliseconds) set WScriptShell = CreateObject("WScript.Shell") WScriptShell.Run "Sleep -m " & milliseconds, 0, true end Function
更新
看起来像微软从win 8中删除了Sleep.exe,所以这不能在win 8中工作,除非你把%s文件夹中的Sleep.exe放在%path%中。