6

バッチ スクリプトを特定の回数 (x10 程度) だけループさせるにはどうすればよいですか? コードが次の場合:

@echo off                                                                     
:loop1                                                                              
Start taskmgr.exe                                                       
Goto loop                                                                         
:loop2                                                                             
Start cmd.exe                                                                 
goto loop2     

loop1 と数回ループして loop2 に行くにはどうすればよいですか?

役立つ回答をいただければ幸いです:)

4

5 に答える 5

6

コマンド ウィンドウを開いて FOR /? と入力すると、探しているコマンドが表示されます。

FOR /L %variable IN (start,step,end) DO command [command-parameters]

The set is a sequence of numbers from start to end, by step amount.
So (1,1,5) would generate the sequence 1 2 3 4 5 and (5,-1,1) would
generate the sequence (5 4 3 2 1)
于 2013-10-02T13:27:59.703 に答える
5

私が無視している理由により、FORコマンドは特定のラベルをループするために機能しません。たとえば(私は間違っているかもしれません):

@echo off
for /L %%a in (1,1,2) do (
goto loop
)

:loop
echo this won't loop for 2 times.

これは単に無限にループします。そのため、ラベルを何度でもループする簡単な代替方法を見つけました。これを行うには、変数を作成しますloop。ラベルが繰り返されるたびに、さらに大きな数になるようにします。

例があります:

@echo off
set loop=0
:loop
echo hello world
set /a loop=%loop%+1 
if "%loop%"=="2" goto next
goto loop

:next
echo This text will appear after repeating "hello world" for 2 times.

出力:

hello world
hello world
This text will appear after repeating "hello world" for 2 times.

説明:

  • set loop=0変数の値loopを 0 に設定します。
  • set /a loop=%loop%+1:loopラベルが繰り返されるたびに 1 が追加されます。
  • if "%loop%"=="2" goto nextloop変数が等しいかどうかをテストします2(したがって、2回繰り返されました)。等しい場合は label に移動し:next、そうでない場合はlabel に移動し:loopます。
于 2017-01-23T16:09:03.930 に答える
4

次に例を示します。

@echo off                                                                     
for /L %%a in (1,1,10) do (
Start taskmgr.exe          
)                                             

for /L %%a in (1,1,10) do (                                                        
Start cmd.exe                                                                 
)
于 2013-10-02T13:45:11.210 に答える
0

これを試して:

@echo off
set loopvar=1
:repeat
if %loopvar% gtr 5 (goto :done) else (set /a loopvar=%loopvar%+1 && echo Loop && goto :repeat)
:done

:done の下に、ループ後に実行するコードを記述します。5 をループを繰り返す回数に置き換えてください。ループの遅延については、これを試してください:

@echo off
set loopvar=1
:repeatwithdelay
if %loopvar% gtr 5 (goto :done) else (set /a loopvar=%loopvar%+1 && timeout /T 1 >nul && echo Loop && goto :repeatwithdelay)

それが役に立ったことを願っています!

于 2021-01-05T17:43:13.173 に答える