2012-04-09 150 views
2

以下是我的要求。如何使用windows批处理文件多次执行一行?

@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

回答

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

谢谢大家的回复...我得到了要求的答案... – 2012-04-09 13:29:49

+0

非常感谢Siva Charan的帮助.. – 2012-04-09 13:34:40

5

您可以使用增量计数器的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! 
) 
+0

我试过这个for循环,但我不知道“暂停”,并被困在此。现在给了这个暂停后,它的工作正常 – 2012-04-09 13:39:32

+0

@ManasaManthri - ???我不知道你在说什么“停顿”。 – dbenham 2012-04-09 13:47:49

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

相关问题