Windows shell 嵌套 for 循环

Windows shell nested for loops

我想 运行 一个程序多次使用两个递增的输入参数。为此,我不得不编写一个 shell 小脚本,其中包含两个嵌套的 for 循环。出于某种原因,我不明白脚本会在打印所有值之前停止执行。

for /l %%r in (1 2 3 4 5 6 7 8 9 10) do (
    for /l %%c in (1 2 3 4 5 6 7 8 9 10) do (
        rem Run my program here!
        echo %%r %%c 
    )
)

输出为

1 1
1 3
3 1
3 3

我真的迷路了,因为我不是 windows shell 编程方面的专家。

您已添加 /l 标志,它具有以下属性:

for /l %%X in (start, step, end) do command

所以在你的情况下:

Start: 1
Step : 2
End  : 3

这就是为什么你得到:

(1, 1), (1,3), (3,1), (3,3)

如果您删除 /l,您应该会得到预期的结果。

echo off
for  %%r in (1 2 3 4 5 6 7 8 9 10) do (
    for  %%c in (1 2 3 4 5 6 7 8 9 10) do (
        echo %%r %%c 
    )
)

其中 returns (1,1) 到 (10,10)。

您可以找到更多信息here