6

以下は私の要件です。

@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

xx.exe yyyyy.dll /p:InputDataSource=Table:table.xmlここで、この行を30 回実行したいと思います。どなたか助けてください。

ありがとう、
マナサ

4

3 に答える 3

9

GOTOインクリメント カウンターでループを使用できますが、FOR /Lループの方がはるかに効率的です。

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

HELP FOR入力するかFOR /?、コマンドラインから入手できるドキュメントを調べてください。

コードのブロック全体を繰り返したい場合は、ブロックを括弧で囲みます。FOR %%N変数の代わりに変数を使用できSleepます。

@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%は、ループ全体が解析されるときに一度だけ展開されますが、!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!
)
于 2012-04-09T12:06:08.050 に答える
2

ループができました。数学を追加するだけです。

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

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

于 2012-12-28T01:37:56.497 に答える