VBS循环简单查询

时间:2013-03-27 08:58:52

标签: 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", 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 = iim1.iimPlay("ecc2.iim")

我希望它检查是否iret < 0。如果是,那么我希望它重复这一步

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

在一个循环中,直到iret > 0具有相同的Pos值,而不会干扰主循环,如果iret > 0我希望它将其移动到代码的下一行。

所以这是循环中的循环怎么做?请注意Pos值,例如如果在Posiret < 0值为6,则使用pos = 6重复该步骤,如果iret > 0然后前进到下一行代码,那么在最后一步{{1}并且整个代码继续进行。

我希望你明白

请提供代码谢谢

ADDED

pos = 7

2 个答案:

答案 0 :(得分:0)

循环数字范围的首选方法是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 ... Loop Until

>> 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循环上应该有一个上限(计数器/计时器?)来避免无限循环。

<强>加了:

在我的示例中,如果函数ret返回值&gt;,则控制布尔变量True的循环设置为Rnd()(=请停止循环)。 0.5。给定一个函数.iimSet()返回一些表示成功或失败的数字,你肯定可以自己计算一个数字(..- 1,0,+ 1 ..)来比较如何(=,&lt;,&gt;, &lt; =,&gt; =)具有该返回值以在成功的情况下停止循环。提示:仔细检查你的测试“iret&lt; 0”与“iret&gt; 0”wrt .iimSet()传递0。

答案 1 :(得分: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

当然,由于你的外部循环只是迭代一系列数字,你最好使用For循环。而且我会在循环外部移动WScript.Shell对象的创建,因此您不会浪费系统资源(重新)一遍又一遍地创建对象。

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