如何使用Windows批处理文件多次执行一行?

时间:2012-04-09 12:00:55

标签: batch-file

以下是我的要求。

@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次 .... 任何人都可以帮助我。

谢谢,
Manasa

3 个答案:

答案 0 :(得分:9)

尝试这种方式: -

@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

答案 1 :(得分:6)

您可以使用带递增计数器的GOTO循环,但FOR / L循环效率更高。

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

通过从命令行键入HELP FORFOR /?来研究可用的文档。

如果要重复整个代码块,请将块括在括号中。您可以使用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!
)

答案 2 :(得分:1)

你已经有了循环,只需添加一些数学。

@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次时,程序将结束。