2012-04-09 169 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次時,程序將結束。