三重嵌套for循环?

时间:2017-01-13 17:48:44

标签: batch-file for-loop cmd

我目前正在编写一个脚本,打印000到999之间的所有数字。 我尝试过这样的事情:

@echo off
set "nums=1,2,3,4,5,6,7,8,9,0"
for %%a in (%nums%) do (
for %%b in (%nums%) do (
for %%c in (%nums%) do echo %%a%%b%%c
)
)
pause

但输出数字是紧凑的,并且处于一种奇怪的顺序。 经过几个小时的反思,我制作了这个剧本:

@echo off
echo list of nums: > nums.txt
set fstnum=0
set secnum=0
set trdnum=0
goto astrt 
:strt:
set /a "fstnum=%fstnum% + 1"
:astrt:
echo %trdnum%%secnum%%fstnum% >> nums.txt
if /i %trdnum%==9 (if %secnum%==9 if %fstnum%==9 exit) else (goto next)
:next:
if /i %secnum%==9 (goto ak) else (goto nnxxtt)
:nnxxtt:
if /i %fstnum%==9 (goto nd) else (goto strt)
:nd:
set fstnum=0
set /a "secnum=%secnum% + 1"
goto astrt
:ak:
if /i %fstnum%==9 (goto nkst) else (goto strt)
:nkst:
set secnum=0
set fstnum=0
set /a "trdnum=%trdnum% + 1"
goto astrt

现在一切都很好,但我想知道为什么三重嵌套for循环不起作用。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

你的循环完全按照声明的方式执行。但是由于初始化不正确,结果可能不是您的预期。

如果您只是将sftp.exec_command('pwd') 声明更改为

%nums%

您将按照通常的基本顺序获得结果字符串:000,001,002,... 998,999。

答案 1 :(得分:1)

还有另一种方式:

{
    path: ':region-slug',
    component: RegionComponent,
    resolve: {
        region: RegionResolver
    }
}

您可以随意调整数字。

此循环变为0到999,增量为1,在数字前面加上两个零,并打印3个右侧数字。

如您所述,结果将是000到999.