好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

BAT的for循环为何停不住 - Windows操作系统 - 自学

BAT的for循环为何停不住

 

有个朋友在QQ群里面提的一个问题,代码如下:

 

@echo on

for /l %%i in (1,1,5) do (

    echo %%i

    if %%i equ 4 (

        goto :end

    )

)

 

:end

pause

 

执行过程如下:

 

d:\Test>test.bat

 

d:\Test>for /L %i in (1 1 5) do (

echo %i

 if %i EQU 4 (goto :end )

)

 

d:\Test>(

 if 1 EQU 4 (goto :end )

)

 

d:\Test>(

 if 2 EQU 4 (goto :end )

)

 

d:\Test>(

 if 3 EQU 4 (goto :end )

)

 

d:\Test>(

 if 4 EQU 4 (goto :end )

)

 

d:\Test>(

 if 5 EQU 4 (goto :end )

)

 

d:\Test>pause

Press any key to continue . . .

 

按理说,%%i 等于 4 的时候,就应该跳出 for 循环了,但为什么执行到 5 那里去了呢?原因是,for /l 不管循环体内部是否有跳出循环的语句,它都会遍历完整个循环条件。

 

我们写个大点的循环来感受一下:

 

@echo off

for /l %%i in (1,1,5000000) do (

    echo %%i

    if %%i equ 4 (

        goto :end

    )

)

 

:end

exit

 

如果你认为它执行到 %%i 等于 4 的时候就会退出,那就错了。它会遍历完 1 到 5000000 的。

 

 

 

查看更多关于BAT的for循环为何停不住 - Windows操作系统 - 自学的详细内容...

  阅读:38次