标题: [其他] 终于弄懂了批处理中多个for嵌套的执行过程 [打印本页]
作者: rogue_1983 时间: 2010-8-27 12:27 标题: 终于弄懂了批处理中多个for嵌套的执行过程
- @echo off
- for %%i in (1;2;3;4) do (
- for %%j in (a;b;c;d) do (
- for %%k in (A;B;C;D) do (
- echo %%i %%j %%k
- )))
- pause
复制代码
通过此例子可以看出,最外层for中的元素在执行下一个for中元素所执行的命令时的过程!
[ 本帖最后由 yslyxqysl 于 2010-8-27 14:25 编辑 ]
作者: canyuexiaolang 时间: 2010-8-27 12:30
嗯,的确看出来了。 挺经典的..
作者: cjiabing 时间: 2010-8-27 20:10
三个FOR,最外面的(第一排)执行一遍,中间的FOR(第二排)根据第一个FOR的变量个数执行相应的次数,最里的FOR(第三排)根据第二个FOR变量个数执行相应的次数。
计算起来,每个FOR都有四个变量,第一个FOR循环了四次,第二个FOR循环了4*4=16次,第三个FOR循环了4*4*4=64次。
第一个FOR只循环了一遍,里面的FOR重复循环了多遍,循环的次数由外一层的FOR的变量个数决定。
这个原理提示人们,可以用来判断两个或两个以上的FOR里面,它们集合中的元素是否相等。用上例解释就是,“if "%%i"=="%%j" echo 相等”
也可以用来组合两个FOR集合之中的元素,比如“echo %%i %%j %%k”当然还有更多用法,好好学习吧!
作者: sgaizxt001 时间: 2010-8-27 20:40
还有一点经验可以得到,在选择循环嵌套的时候,里外不一样,时间消耗也是不一样的
作者: ZJHJ 时间: 2010-8-27 21:41
就是排列煮合人人见面
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |