-1

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值,例如,如果Pos值是 6 iret < 0,则使用 重复该步骤pos = 6,如果iret > 0则继续执行下一行代码,因此在最后一步pos = 7,整个代码继续进行。

我希望你能明白

请给代码谢谢

添加

 >>pos = 2

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

Do

iret = iim1.iimSet("loopVar",Cstr(pos))
iret = iim1.iimPlay("ecc2.iim")
iret = Rnd() > .5
WScript.Echo pos, CStr(iret)
Loop Until iret


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

pos = pos + 1
4

2 回答 2

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以避免无限循环。

添加:

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

于 2013-03-27T09:22:38.933 回答
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
于 2013-03-27T11:05:27.310 回答