对于Windows bat脚本中从1到n的循环计数


25

我需要在bat脚本文件中运行Windows命令n次。我知道如何使用各种编程语言来执行此操作,但是无法在Windows命令行上正确完成它:-(

我希望这样的事情

for(int i = 0; i < 100; i++) {
   // do something
}

甚至是这个(尽管并不完全是认真的)

1.upto(100, {
   // do something
}) 

谢谢!

编辑

我可以用java,perl,c或任何会生成如下所示的bat脚本的程序编写程序

for %%N in (1 2 3 4 5 6 7 8 9 10 11 12) do echo %%N

等等。甚至“更好”:

echo 1
echo 2
echo 3
echo 4
echo 5
echo 6
echo 7
echo 8
echo 9
echo 10
echo 11
echo 12

然后执行它...但问题是,我需要一种简洁的方法来指定要脚本中迭代的数字范围。

谢谢!


1
这里的答案非常好,但是为了上帝的爱...批吗?真?我强烈建议您改用更现代的语言。
EBGreen

听起来他在这件事上别无选择。
wolfgangsz

我没有看到任何暗示没有选择的东西。事实上,他说他可以用“任何”语言写,所以我想说,没有进一步的信息,听起来他确实可以选择。
EBGreen

伙计们,我需要部署通过脚本用现代语言编写的代码……
raoulsson

1
可能需要或不需要-有时它是完成工作的正确工具。您不能保证Powershell,更不用说在Windows XP或2003服务器上安装bash,python,perl等了。批处理是一个完全可以接受的解决方案。
Goyuix

Answers:


44

您可以类似地这样做:

ECHO Start of Loop

FOR /L %i IN (1,1,5) DO (
  ECHO %i
)

1,1,5解码为:

(start,step,end)

还要注意,如果要将其嵌入批处理文件中,则需要使用双百分号(%%)来为变量添加前缀,否则命令解释器将在运行循环之前尝试评估变量%i。


3
“ ECHO循环开始”将在每个步骤中执行,而不仅仅是开始。
暂停,直到另行通知。

1
同样,使用@符号将禁止从命令行执行命令时打印命令。“ ... DO @(... ...
暂停,直到另行通知。”,

这仅适用于“ FOR”之后的/ L。为什么?
拉乌尔森,2009年

1
做一个For /?您会发现:FOR / L%variable IN(开始,步骤,结束)DO命令[命令参数]该集合是一个从开始到结束的数字序列,按步长编号。因此(1,1,5)将生成序列1 2 3 4 5,而(5,-1,1)将生成序列(5 4 3 2 1)
EBGreen

最好%%i在文本中使用并添加注释,%i以便在命令行直接执行。大多数用户都会在BAT文件中对其进行测试,并尝试找出导致错误的原因(例如我)。
i486


6

直接从命令行:

for /L %n in (1,1,100) do @echo %n

使用批处理文件:

@echo off
for /L %%n in (1,1,100) do echo %%n

显示:

1
2
3
...
100

如果数字序列是0001至00100+等怎么办?
nwgat 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.