2012-04-09 5 views
2

私の要件は以下のとおりです。ここでWindowsバッチファイルを使用して1行を複数回実行するにはどうすればよいですか?

@echo off 
cls 
Set Sleep=0 
:start 
echo This is a loop 
xx.exe yyyyy.dll /p:InputDataSource=Table:table.xml 
Set /A Sleep+=1 
echo DisplayingSleepvalue 
echo %Sleep% 
goto start 

私はいずれかがこの上で私を助けてもらえ30回 .... ためxx.exe yyyyy.dll /p:InputDataSource=Table:table.xmlにこの行を実行します。

おかげで、
Manasa

答えて

7

この方法を試してください: -

@echo off 
cls 
Set Sleep=0 
:start 
if %Sleep% == 30 (goto end) 
xx.exe yyyyy.dll /p:InputDataSource=Table:table.xml 
echo This is a loop 
Set /A Sleep+=1 
echo %Sleep% 
goto start 
:end 
echo "am 30 now" 
pause 
+0

すべての返信に感謝します...私は必要な答えを得た... –

+0

助けをたくさんありがとうSiva Charan .. –

1

forコマンドを使用して試してみてください。

5

増分カウンタでGOTOループを使用できますが、FORループとLループがはるかに効率的です。

for /l %%N in (1 1 30) do someCommand 

研究、コマンドラインからHELP FORまたはFOR /?を入力して利用できるドキュメント。

ブロック全体を繰り返す場合は、ブロックをかっこで囲みます。スリープ変数の代わりにFOR %% N変数を使用できます。

@echo off 
cls 
for /l %%N in (1 1 30) do (
    echo This is a loop 
    xx.exe yyyyy.dll /p:InputDataSource=Table:table.xml 
    echo DisplayingSleepvalue 
    echo %%N 
) 

例では必要ありませんが、ループ内で環境変数を操作する場合は、遅延拡張を使用する必要があります。通常の拡張%sleep%は、ループ全体が解析されたときに1回だけ展開されますが、実行時には各ループ反復ごとに!sleep!の値を展開する必要があります。遅延拡張を使用可能にする必要があります。

@echo off 
setlocal enableDelayedExpansion 
cls 
set sleep=0 
for /l %%N in (1 1 30) do (
    echo This is a loop 
    xx.exe yyyyy.dll /p:InputDataSource=Table:table.xml 
    set /a sleep+=1 
    echo DisplayingSleepvalue 
    echo !sleep! 
) 
+0

私はこれをループにしようとしましたが、私は "一時停止"を知らず、これに固執しました。今すぐこの一時停止を与えた後、それは正常に動作します –

+0

@ ManasaManthri - ???あなたが話している「一時停止」が何であるか分かりません。 – dbenham

1

ホードはいくつかの数学を追加し、ループを得ました。

@echo off 
set execute counter=0 
:loop 
(Insert your command here) 
set /a executecounter=%executecounter%+1 
if "%executecounter%"=="30" goto done 
goto loop 
:done 
echo Complete! 
pause 

これにより、コマンドが実行されるたびにカウンタが増加し、30回実行するとプログラムは終了します。

関連する問題