如何尽快跳出 for /L 循环》又是一个经典问题。
外网dostips.com就此曾有多次讨论,现简化出三个题型说明一些思路的对比结果,给本坛有兴趣者品味参考...
基本上是毙掉了在循环体内 call :xxx 子过程的方法,因其低效繁复。
个人感觉题型一类似 do-while 循环结构,也许更有实用价值。- ::题型一,采用开关变量 + if 语块包裹循环体》耗时约2s
- @echo off
- set "#break="
- for /L %%n in (1,1,320000) do if not defined #break (
- REM ”其他命令“
- set "n=%%n" &set #break=1)
- echo,%n%
- ::exit/b
-
- ::题型二,采用 if 语块包裹循环体》约耗时1.5s
- @echo off
- for /L %%n in (1,1,320000) do if %%n equ 1 (
- REM ”其他命令“
- set "n=%%n" &goto[outLoop])
- :[outLoop]
- echo,%n%
- ::exit/b
-
- ::题型三,不采用 if 语块包裹循环体》耗时约12s
- @echo off
- for /L %%n in (1,1,3200000) do (
- REM ”其他命令“
- set "n=%%n" &goto[outLoop])
- :[outLoop]
- echo,%n%
- ::exit/b
复制代码
|