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

Man*_*hri 3 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
Run Code Online (Sandbox Code Playgroud)

在这里,我想要执行xx.exe yyyyy.dll /p:InputDataSource=Table:table.xml此行30次 ....任何人都可以帮助我.

谢谢,
Manasa

Siv*_*ran 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
Run Code Online (Sandbox Code Playgroud)


dbe*_*ham 6

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

for /l %%N in (1 1 30) do someCommand
Run Code Online (Sandbox Code Playgroud)

通过键入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
)
Run Code Online (Sandbox Code Playgroud)

您的示例不需要它,但如果您想在循环中操作环境变量,则必须使用延迟扩展.正常扩展%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!
)
Run Code Online (Sandbox Code Playgroud)