Board logo

标题: [其他] 终于弄懂了批处理中多个for嵌套的执行过程 [打印本页]

作者: rogue_1983    时间: 2010-8-27 12:27     标题: 终于弄懂了批处理中多个for嵌套的执行过程

  1. @echo off
  2. for %%i in (1;2;3;4) do (
  3. for %%j in (a;b;c;d) do (
  4. for %%k in (A;B;C;D) do (
  5. echo %%i %%j %%k
  6. )))
  7. 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