[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] [已解决]vbs如何1分钟后跳出循环

本帖最后由 522235677 于 2014-6-27 18:06 编辑
  1. do
  2. ...........
  3. loop
复制代码
该代码会无限循环,怎样能在循环开始后1分钟跳出循环
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

一秒后退出 vbs
  1. WScript.exe /T:1 test.vbs
复制代码
超过一秒结束循环
  1. t=timer
  2. do while timer-t<1
  3. ...........
  4. loop
复制代码
网页的话,可以这样
  1. id=setTimeOut("loopSub()",0)
  2. setInterval("clearTimeOut(id)",1000)
复制代码

TOP

回复 2# CrLf
  1. Dim objShell,ret,wshshell
  2. set wshshell=createobject("wscript.shell")
  3. Set objShell = CreateObject("WSCript.Shell")
  4. t=timer
  5. do while timer-t<WScript.Arguments(1)
  6.   ret = objShell.Appactivate(WScript.Arguments(0))
  7.     If ret Then
  8.     wshshell.sendkeys "{tab}"
  9.     wscript.quit (10)
  10. end if
  11. loop
复制代码
我这样为什么没有效果,我第二个参数是10

TOP

回复 3# 522235677


    你都 wscript.quit 了,当然不循环了

TOP

回复 4# CrLf


    不是的,我的这个还是一直在循环,If ret Then 都没有达成,所有还没quit

TOP

回复 5# 522235677


    变量类型问题:
  1. CDbl(WScript.Arguments(1))
复制代码
一般会自动转换,不懂这里为什么不会,没研究

TOP

回复 6# CrLf


    提示 变量使用了一个vbscript中不支持的automation 类型 CDbl

TOP

回复 7# 522235677


我这是正常的:
测试用 cscript test.vbs "任意一个不存在的标题" 5  引用内容为如下代码的 vbs
  1. Dim objShell,ret,wshshell
  2. set wshshell=createobject("wscript.shell")
  3. Set objShell = CreateObject("WSCript.Shell")
  4. t=timer
  5. do while timer-t<CDbl(WScript.Arguments(1))
  6.   ret = objShell.Appactivate(WScript.Arguments(0))
  7.     If ret Then
  8.     wshshell.sendkeys "{tab}"
  9.     wscript.quit (10)
  10. end If
  11. Loop
复制代码
那要不分别试试其他的办法,比如 CInt(WScript.Arguments(1)) 强制int类型转换和 WScript.Arguments(1)/1 自动double类型转换
1

评分人数

TOP

回复 8# CrLf


    是我写错了……

TOP

Timer() 不会在零点抽风?让我们严谨点:  XD
  1. Const nTimeOut = +5  ' 超时时间(秒)
  2. Dim dtStart, dtEnd
  3. dtStart = Now()
  4. dtEnd = DateAdd("s", nTimeOut, Now())
  5. Do While DateDiff("s", Now(), dtEnd) > 0
  6. WScript.Sleep 200
  7. ' Do Something ..
  8. Loop
  9. ' Do Something ..
  10. Msgbox DateDiff("s", dtStart, Now()) & " 秒过去鸟。不要嫌代码长长长 ..."
复制代码
『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

加上sleep方法进行延迟,否则会进入死循环的。

TOP

返回列表