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

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

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

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

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

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

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


当前回答

您可以采取如下措施避免FOR循环。

set counter=0
:loop
echo "input commands here"
SET /A counter=%counter%+1
if %counter% GTR 200
(GOTO exit) else (GOTO loop)
:exit
exit

其他回答

你可以不使用for语句^.^:

@echo off
:SPINNER
SET COUNTP1=1

:1
CLS
 :: YOUR COMMAND GOES HERE
IF !COUNTP1! EQU 200 goto 2

SET COUNTP1=1
) ELSE (
SET /A COUNTP1+=1
)
goto 1

:2
:: COMMAND HAS FINISHED RUNNING 200 TIMES

它有基本的理解。试一试吧。: P

或者你可以根据你想要循环的次数递减/增加一个变量:

SETLOCAL ENABLEDELAYEDEXPANSION
SET counter=200
:Beginning
IF %counter% NEQ 0 (
echo %x
copy %x.txt z:\whatever\etc
SET /A counter=%counter%-1
GOTO Beginning
) ELSE (
ENDLOCAL
SET counter=
GOTO:eof

显然,使用FOR /L是高速公路,而这是后街,需要更长的时间,但它们到达相同的目的地。

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

@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

答案取决于你对批处理的熟悉程度,如果你不是很有经验,我建议你增加一个循环变量:

@echo off
set /a loop=1
:repeat
echo Hello World!
set /a loop=%loop%+1
if %loop%==<no. of times to repeat> (
goto escapedfromrepeat
)
goto repeat
:escapedfromrepeat
echo You have come out of the loop
pause

但如果你对批处理更有经验,我会推荐更实用的for /l %loop (1,1,10) do echo %loop是更好的选择。

             (start at 1, go up in 1's, end at 10)
for /l %[your choice] (start, step, end) do [command of your choice]

(编辑)我让它在100次之后停止

@echo off
goto actual
set /a loopcount=0
:actual
set /a loopcount=%loopcount% + 1
echo %random% %random% %random% %random%
timeout 1 /nobreak>nul
if %loopcount%== 100 goto stop
goto actual
:stop
exit

这将产生4个随机数每1秒100次。 取出“timeout 1 /nobreak>nul”使它运行得非常快。