标题: 请问在一个VBS脚本中是否可以运行两个或多个独立的循环 [打印本页]
作者: newxso 时间: 2008-11-9 20:39 标题: 请问在一个VBS脚本中是否可以运行两个或多个独立的循环
我想在一个VBS脚本中运行两个独立的循环,或者在一个VBS循环中嵌套另一个循环。此情形在BAT中用 for 就很容易实现,不知VBS能否实现,请高手指点。
作者: zqz0012005 时间: 2008-11-9 21:22
1、什么叫独立的循环?非嵌套循环不都是独立的吗?
2、嵌套循环很容易啊- for i=1 to 9
- for j=1 to 9
- if j <= i then str = str & i & "×" & j & "=" & i * j & vbTab
- next
- str=str & vbCrlf
- next
- WScript.Echo str
复制代码
作者: newxso 时间: 2008-11-10 07:45
是这样的,现在有两个VBS1和VBS2,VBS1是循环检测即时钟点,VBS2是一个延时循环提示程序,如何把VBS1合拼到VBS2中呢?
VBS1:- Set WshShell = CreateObject("Wscript.Shell")
- SleepTime = "23:00:00"
- While true
- if DateDiff("s", Time, SleepTime) < 0 then
- WshShell.Popup "睡眠时间已到,马上就会关机! ", 20, "温馨提示", vbInformation
- WshShell.run "shutdown -s -r -t 0"
- Wscript.Quit
- end if
- WScript.Sleep(10000)
- wend
复制代码
VBS2:
- Set WshShell = CreateObject("Wscript.Shell")
- for i = 1 to 3
- Wscript.Sleep 1000*60*60
- WshShell.Popup "你已经使用电脑" &i& "个小时了,请注意休息! ", 10, "温馨提示", vbInformation
- next
- Wscript.Sleep 1000*15
- WshShell.Popup "电脑的使用时间已到,马上就会关机! ", 20, "温馨提示", vbInformation
- WshShell.run "shutdown -s -r -t 0"
复制代码
[ 本帖最后由 newxso 于 2008-11-10 09:03 编辑 ]
作者: zqz0012005 时间: 2008-11-10 09:39
其实你的意思就是满足两个条件之一就关机:超过23:00:00或者超过3个小时- Set WshShell = CreateObject("Wscript.Shell")
- SleepTime = "23:00:00"
- for i = 1 to 3
- counter = 0
- While counter<60
- if DateDiff("s", Time, SleepTime) < 0 then
- WshShell.Popup "睡眠时间已到,马上就会关机! ", 20, "温馨提示", vbInformation
- WshShell.run "shutdown -s -r -t 0"
- Wscript.Quit
- end if
- WScript.Sleep 1000*60
- counter = counter + 1
- wend
- WshShell.Popup "你已经使用电脑" &i& "个小时了,请注意休息! ", 10, "温馨提示", vbInformation
- next
- Wscript.Sleep 1000*15
- WshShell.Popup "电脑的使用时间已到,马上就会关机! ", 20, "温馨提示", vbInformation
- WshShell.run "shutdown -s -r -t 0"
复制代码
作者: newxso 时间: 2008-11-10 13:25
用版主的方法解决了两个VBS合拼的问题,多谢指点。其实我的原意是,在执行延时前先启动另一个循环,再进入延时,而被启动的另一个循环与这时的延时互相独立地进行。我想这样需要启动两个进程,在一个脚本中可能不能实现。
[ 本帖最后由 newxso 于 2008-11-20 07:19 编辑 ]
作者: everest79 时间: 2008-11-21 17:21
vbs不支持多线程,你要实现这种功能,可能要找个第三方线程组件,可以在网上搜搜
作者: newxso 时间: 2008-11-25 19:38
关于在一个 VBS 脚本中实现两个独立循环的问题,暂时用了以下方法:
- Set WshShell = CreateObject("Wscript.Shell")
- if WScript.Arguments.Count = 0 then
- MyName = WScript.ScriptFullName
- WshShell.run(chr(34) & MyName & chr(34) & " a"),0,false
- One
- else
- Two
- end if
- Wscript.Quit
-
- '循环1
- Sub One()
- for i = 1 to 5
- WshShell.popup "提示" & i & "次!", 2, "提示A"
- Wscript.Sleep 1000
- next
- End Sub
-
- '循环2
- Sub Two()
- for j = 1 to 10
- WshShell.popup "提示" & j & "次!", 2, "提示B"
- Wscript.Sleep 1000
- next
- End Sub
复制代码
利用以上方法,可以把在 3 楼提到的两个 VBS 合拼到一个 VBS 中。
[ 本帖最后由 newxso 于 2008-11-26 08:54 编辑 ]
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |