Board logo

标题: [文本处理] 批处理如何使用for嵌套? [打印本页]

作者: jay_16    时间: 2011-4-9 22:30     标题: 批处理如何使用for嵌套?

看一下这段代码中的两个for循环
  1. @echo off
  2. for %%a in (c d e f g) do (
  3. echo %%a
  4. )
  5. for /r g: %%i in (*.ini) do (
  6. echo %%i
  7. )
  8. pause
复制代码
可以正常运行,并显示。可是我想要
  1. @echo off
  2. for %%a in (c d e f g) do (
  3. echo %%a:
  4. for /r %%a: %%i in (*.ini) do echo %%i
  5. )
  6. pause
复制代码
可是窗口一闪而过!?这是为什么?还有为什么不可以for里做注释?
像这样
  1. @echo off
  2. for %%a in (c d e f g) do (
  3. echo %%a
  4. ::echo
  5. )
  6. pause
复制代码
窗口也会一闪而过?
作者: wc726842270    时间: 2011-4-9 23:33

感觉上好久没发代码了
  1. @echo off
  2. for %%a in (c d e f g) do (
  3. echo %%a
  4. rem echo
  5. )
  6. pause
复制代码
“为什么”我也不知道,不过LZ最好多试几遍
作者: hanyeguxing    时间: 2011-4-9 23:39

1,不要在()内使用:或::。注释使用rem
2,for /开关 %%a in (set) do (命令) 中
仅()中可以使用预处理阶段不能完全扩展的变量,其他地方不允许
以 for /r "地址" %%a in (set) do (命令) 为例
""中的地址进可以使用直接变量%a%和参数%1类,而不可以使用延迟变量!a!或for扩展变量%%a
for /f "关键字" %%a in (set) do (命令) 中的关键字也是如此
作者: jay_16    时间: 2011-4-10 14:17

3# hanyeguxing


能帮我解决一下与上面代码意思等效的代码吗?十分感谢
作者: hanyeguxing    时间: 2011-4-10 14:25

  1. @echo off
  2. for %%a in (c d e f g) do call:a %%a
  3. pause&exit
  4. :a
  5. echo;分区 %1:
  6. for /r "%1:" %%a in (*.ini) do echo;%%a
复制代码

作者: jay_16    时间: 2011-4-10 16:06

5# hanyeguxing


谢谢。
顺便问一下。%~ni,%~di等从文件名中扩展的用法是不是只能用在for循环中?
如果不是的话,那在不在for中的用法是什么?
十分感谢....
作者: hanyeguxing    时间: 2011-4-10 17:25

示例:
  1. @echo off
  2. echo;批处理文件名是%~n0
  3. set "a=d:\1 2 3.txt"
  4. call:a "%a%"
  5. for %%a in ("%a%") do echo for 扩展其文件名%%~na
  6. pause&exit
  7. :a
  8. echo 参数 扩展其文件名%~n1
复制代码





欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2