Vbscript VBS循环简单查询

Vbscript VBS循环简单查询,vbscript,Vbscript,helo请帮忙这是密码 Option Explicit Dim iim1, i, s , shell dim iret dim myname, mypath dim pos 'initialize iMacros instance set iim1= CreateObject ("iMacros") 'i = iim1.iimOpen ("-fx", false) 'Use open Firefox instance if available i = iim1.iimOpen ("-fx

helo请帮忙这是密码

Option Explicit

Dim iim1, i, s , shell
dim iret
dim myname, mypath
dim pos


'initialize iMacros instance
set iim1= CreateObject ("iMacros")

'i = iim1.iimOpen ("-fx", false) 'Use open Firefox instance if available
i = iim1.iimOpen ("-fx", true) 'Always open new instance

pos = 2

Do while pos < 10

iret = iim1.iimSet("loopVar",Cstr(pos))
iret = iim1.iimPlay("ecc2.iim")

set shell=createobject("wscript.shell")
shell.Run "%comspec% /c C:\Users\SDFL\Desktop\dc1.bat"

pos = pos + 1
loop
我想让它检查
iret<0
。如果是,则我希望它重复该步骤

iret = iim1.iimSet("loopVar",Cstr(pos))
iret = iim1.iimPlay("ecc2.iim")
在循环中,直到
iret>0
具有相同的
Pos
值,而不干扰主循环,如果
iret>0
我希望它将其移动到代码的下一行

这是一个循环中的一个循环,怎么做?请注意
Pos
值,例如,当
iret<0
时,如果
Pos
值为6,则使用
Pos=6
重复该步骤,如果
iret>0
则向前移动到下一行代码,因此在最后一步
Pos=7
,整个代码继续进行

我希望你得到它

请给出代码,谢谢

已添加


在数值范围内循环的选择方法是
for
,而不是
While

>> For pos = 2 To 9
>>     WScript.Echo "pos", pos
>> Next
>>
pos 2
pos 3
pos 4
pos 5
pos 6
pos 7
pos 8
pos 9
要至少重复一次操作,直到某个条件完全满足,请使用
Do。。。循环直到

>> For pos = 2 To 9
>>     Do
>>        ret = Rnd() > .5
>>        WScript.Echo pos, CStr(ret)
>>     Loop Until ret
>> Next
>>
2 True
3 True
4 True
5 False
5 False
5 True
6 False
6 True
7 True
8 True
9 False
9 False
9 True
Do
循环可能有一个上限(计数器/计时器?),以避免无休止的循环

添加:


在我的示例中,如果函数
Rnd()
返回值>,则循环控制布尔变量
ret
设置为
True
(=请停止循环)。给定一个函数
.iimSet()
,该函数返回一些表示成功或失败的数字,您当然可以自己计算出什么数字(..-1,0,+1…)来比较(=,=)如何与该返回值进行比较,以便在成功的情况下停止循环。提示:仔细检查您的测试“iret<0”与“iret>0”wrt
.iimSet()
传递0。

如果您想要一个内环,只需添加一个内环:

pos = 2

Do while pos < 10
  Do
    iret = iim1.iimSet("loopVar",Cstr(pos))
    iret = iim1.iimPlay("ecc2.iim")
  Loop Until iret > 0

  set shell=createobject("wscript.shell")
  shell.Run "%comspec% /c C:\Users\SDFL\Desktop\dc1.bat"

  pos = pos + 1
loop

先生,谢谢您的回复,但是代码不能与iret=iim1.iimSet(“loopVar”,Cstr(pos))一起工作。iret=iim1.iimPlay(“ecc2.iim”)能否请您提供这些代码,我是vbs新手。这些是imacrosok sir的脚本,使用上述代码进行了尝试,并添加到第一篇文章中,代码运行1次,然后弹出2个true,单击ok,然后停止,ret返回值-933。我希望它继续不断,没有弹出窗口。为了让这一切正常工作,我不得不从原始代码的最后一行删除“循环”,所以现在请告诉代码除了第二个ret循环之外,还要循环整个代码。谢谢啊,就这样谢谢你,先生,它工作得很好。。谢谢你Ekkehard.Horner先生的帮助,先生关于内循环我想问的一件更简单的事情是,它将无休止地循环,直到iret>0,如果我只想循环5次,但不超过5次呢?密码是什么?意味着如果在5次内部循环/次数后未获得iret>0,则应继续执行下一行代码??再次感谢您的回复,我非常感谢您添加一个计数器变量,该变量随内循环的每个周期递增,并将条件更改为
iret>0或counter>5
>> For pos = 2 To 9
>>     Do
>>        ret = Rnd() > .5
>>        WScript.Echo pos, CStr(ret)
>>     Loop Until ret
>> Next
>>
2 True
3 True
4 True
5 False
5 False
5 True
6 False
6 True
7 True
8 True
9 False
9 False
9 True
pos = 2

Do while pos < 10
  Do
    iret = iim1.iimSet("loopVar",Cstr(pos))
    iret = iim1.iimPlay("ecc2.iim")
  Loop Until iret > 0

  set shell=createobject("wscript.shell")
  shell.Run "%comspec% /c C:\Users\SDFL\Desktop\dc1.bat"

  pos = pos + 1
loop
set shell=createobject("wscript.shell")

For pos = 2 To 9
  Do
    iret = iim1.iimSet("loopVar",Cstr(pos))
    iret = iim1.iimPlay("ecc2.iim")
  Loop Until iret > 0

  shell.Run "%comspec% /c C:\Users\SDFL\Desktop\dc1.bat"
Next