我需要执行一个命令100-200次,到目前为止,我的研究表明,我要么必须复制/粘贴这个命令的100份副本,要么使用for循环,但for循环需要一个项的列表,因此我需要200个文件进行操作,或者200个项的列表,这就不符合要求了。

我宁愿不编写C程序,也不愿意为了测试目的而编写另一个程序来执行我的程序。修改我的程序本身也不是一个选项。

那么,给定一个命令,a,我如何通过批处理脚本执行N次?

注意:我不想要一个无限循环

例如,下面是它在Javascript中的样子:

var i;
for (i = 0; i < 100; i++) {
  console.log( i );
} 

在Windows上运行的批处理脚本会是什么样子?


当前回答

使用标签在cmd编程中实现循环的非常基本的方法

@echo off
SET /A "index=1"
SET /A "count=5"
:while
if %index% leq %count% (
   echo The value of index is %index%
   SET /A "index=index + 1"
   goto :while
)

其他回答

使用FOR /l并确保使用%%而不是% 这样你就不会头疼了。

并尝试设置循环。

一个简单但计数循环的模板:

set loopcount=[Number of times]
:loop
[Commands you want to repeat]
set /a loopcount=loopcount-1
if %loopcount%==0 goto exitloop
goto loop
:exitloop

例子:说“Hello World!”5倍:

@echo off
set loopcount=5
:loop
echo Hello World!
set /a loopcount=loopcount-1
if %loopcount%==0 goto exitloop
goto loop
:exitloop
pause

这个例子将输出:

Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Press any key to continue . . .

因为/l是你的朋友:

for /l %x in (1, 1, 100) do echo %x

从1开始,一步一步,到100结束。

警告:如果是批处理文件,请使用%%而不是%,例如:

for /l %%x in (1, 1, 100) do echo %%x

(这是我非常非常讨厌windows脚本的原因之一。)

如果每个循环迭代都有多个命令,请这样做:

for /l %x in (1, 1, 100) do (
   echo %x
   copy %x.txt z:\whatever\etc
)

或者在批处理文件中

for /l %%x in (1, 1, 100) do (
   echo %%x
   copy %%x.txt z:\whatever\etc
)

关键: /l表示for命令将以数字方式操作,而不是操作一组文件 %x是循环变量 (起始值、值增量、结束条件[含])

不确定这样的答案是否已经提交,但你可以尝试这样的回答:

@echo off
:start
set /a var+=1
if %var% EQU 100 goto end
:: Code you want to run goes here
goto start

:end
echo var has reached %var%.
pause
exit

变量%var%将增加1,直到它达到100,这时程序将输出它已完成执行。同样,不确定这个是否已经提交或类似的东西,但我认为它可能是最紧凑的。

我用这个。它和其他的是一样的,但是它只是另一种写法。

@ECHO off
set count=0
:Loop
if %count%==[how many times to loop] goto end
::[Commands to execute here]
set count=%count%+1
goto Loop
:end