以下是我的要求。
@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
答案 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 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!
)
答案 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次时,程序将结束。