-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 = 6iret > 0pos = 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

少なくとも1回、ある条件が満たされるまでアクションを繰り返すには、次を使用します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より大きい値を返す場合、ループ制御ブール変数retTrue(=ループを停止してください)に設定されます。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 に答える