找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 12592|回复: 2

[问题求助] VBS闹钟的核心代码一样,为何其中一个这么占cup?

[复制链接]
发表于 2012-11-21 17:32:31 | 显示全部楼层 |阅读模式
核心代码一样,为何其中一个这么占cup
学习vbs
在网上找了个闹钟的代码,自以为看懂了,于是依葫芦画瓢自己也写了一个
可为何我的代码一运行cup就飙到 25,而别人的却是0
仔细研究了一天,实在是找不出原因来了,头都快炸了,请各位大神帮忙解惑。

代码一,网上找的

  1. on error resume next
  2. set ws=createobject("wscript.shell")
  3. set fso=createobject("scripting.filesystemobject")

  4. do
  5.         't=inputbox("注意:本程序只考虑到分种")
  6. t=2359
  7.         if t="" then
  8.                 wscript.quit
  9.                 elseif IsNumeric(t)=false  then
  10.                         msgbox "输入错误,请重新输入!",16+4096,"错误"
  11.                         elseif len(t)<>4 or left(t,2)>24 or right(t,2)>59 then
  12.                                         msgbox "输入错误,请重新输入!",16+4096,"错误"
  13.                                         else
  14.                                         call naoling()
  15.         end if
  16. loop

  17. sub naoling()
  18.         shi=left(t,2)
  19.         fen=right(t,2)
  20.         do
  21.                 if timer>3600*shi+60*fen then
  22.                         ws.run "cmd /c @echo ",0,true
  23.                         sfjx=Ws.Popup("时间已到,是否继续运行闹铃程序?"& vbcrlf & "如果不退出闹铃将在1分钟后继续提醒。", 10, "闹铃提醒", 4 + 32)
  24.                         if sfjx=7 then
  25.                                 wscript.quit
  26.                                 else
  27.                                 wscript.sleep 1000*60
  28.                         end if
  29.                 end if
  30.                 wscript.sleep 1000
  31.         loop
  32. end sub

复制代码
代码二,我自己写的,狂占cup

  1. set ws=WScript.CreateObject("WScript.Shell")
  2. t=time:t1=int(timer)

  3. do

  4. a=20
  5.         if a=false then
  6.                 Wscript.Quit           '判断若点了关闭按钮则退出
  7.                 elseif IsNumeric(a)=false  then
  8.                         msgbox "输入错误,请重新输入!",16+4096,"错误"
  9.                         else exit do
  10.         end if
  11. loop

  12. ts=inputbox("输入提示信息","提示","提示")
  13. if ts=false then Wscript.Quit           '判断若点了关闭按钮则退出

  14. a1=a*60+t1
  15. fen=((a mod 60)+minute(t)) mod 60
  16. shi=int(a/60+hour(t))
  17. if (a mod 60)+minute(t)>=60 then shi=shi+1

  18. s="00"&shi:f="00"&fen
  19. msgbox "启动时间 "&right(s,2)&":"&right(f,2)

  20. do
  21.         if timer>=a1 then
  22.                 ws.run "cmd /c @echo ",0,true
  23.                 f=Ws.Popup("时间已到,是否继续运行闹铃程序?"& vbcrlf & "如果不退出闹铃将在1分钟后继续提醒。", 10, "闹铃提醒", 4 + 32)
  24.                 If (f = 7 ) Then
  25.                         Wscript.Quit
  26.                         else
  27.                                 wscript.sleep 1000*5
  28.                 end if
  29.                 wscript.sleep 1000
  30.         end if
  31. loop

复制代码
 楼主| 发表于 2012-11-21 18:24:54 | 显示全部楼层
上帝啊,总算找到原因了,原来是 do loop 循环的太快了,要给它加个延时

  1. do
  2.      if a="aa" then msgbox "hh"
  3.      wscript.sleep 1000 '没有这一行的原因
  4. loop
复制代码
发表于 2012-11-23 08:22:30 | 显示全部楼层
cpu  不是  cup
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 11:46 , Processed in 0.017676 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表