我需要执行一个命令100-200次,到目前为止,我的研究表明,我要么必须复制/粘贴这个命令的100份副本,要么使用for循环,但for循环需要一个项的列表,因此我需要200个文件进行操作,或者200个项的列表,这就不符合要求了。
我宁愿不编写C程序,也不愿意为了测试目的而编写另一个程序来执行我的程序。修改我的程序本身也不是一个选项。
那么,给定一个命令,a,我如何通过批处理脚本执行N次?
注意:我不想要一个无限循环
例如,下面是它在Javascript中的样子:
var i;
for (i = 0; i < 100; i++) {
console.log( i );
}
在Windows上运行的批处理脚本会是什么样子?
答案取决于你对批处理的熟悉程度,如果你不是很有经验,我建议你增加一个循环变量:
@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]
因为/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是循环变量
(起始值、值增量、结束条件[含])