在 Windows bat 脚本中,For 循环从 1 到 n 计数

rao*_*son 29 scripting windows batch

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

我希望有类似的东西

for(int i = 0; i < 100; i++) {
   // do something
}
Run Code Online (Sandbox Code Playgroud)

甚至这个(虽然不完全是认真的)

1.upto(100, {
   // do something
}) 
Run Code Online (Sandbox Code Playgroud)

谢谢!

编辑

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

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

等等。甚至“更好”:

echo 1
echo 2
echo 3
echo 4
echo 5
echo 6
echo 7
echo 8
echo 9
echo 10
echo 11
echo 12
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

Goy*_*uix 54

您可以像这样执行类似的操作:

ECHO Start of Loop

FOR /L %i IN (1,1,5) DO (
  ECHO %i
)
Run Code Online (Sandbox Code Playgroud)

1,1,5 被解码为:

(start,step,end)
Run Code Online (Sandbox Code Playgroud)

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

  • “ECHO Start of Loop”将在每一步执行,而不仅仅是开始。 (3认同)
  • 做一个 For /? 你会发现: FOR /L %variable IN (start,step,end) DO command [command-parameters] 该集合是一个从开始到结束的数字序列,按步数计算。所以 (1,1,5) 将生成序列 1 2 3 4 5 并且 (5,-1,1) 将生成序列 (5 4 3 2 1) (2认同)
  • 最好在文本中使用 `%%i` 并添加注释,以便在命令行直接执行它是 `%i`。大多数用户会在 BAT 文件中对其进行测试,并尝试找出出错的原因(像我一样)。 (2认同)

小智 10

直接从命令行:

for /L %n in (1,1,100) do @echo %n
Run Code Online (Sandbox Code Playgroud)

使用批处理文件:

@echo off
for /L %%n in (1,1,100) do echo %%n
Run Code Online (Sandbox Code Playgroud)

显示:

1
2
3
...
100
Run Code Online (Sandbox Code Playgroud)


And*_*ndy 9

语法是

FOR %%A IN (1 2 3) DO ECHO %%A
Run Code Online (Sandbox Code Playgroud)

这里的好文章和 XP 的细节在这里