[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何使用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
复制代码
窗口也会一闪而过?

感觉上好久没发代码了
  1. @echo off
  2. for %%a in (c d e f g) do (
  3. echo %%a
  4. rem echo
  5. )
  6. pause
复制代码
“为什么”我也不知道,不过LZ最好多试几遍
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

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 (命令) 中的关键字也是如此
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

3# hanyeguxing


能帮我解决一下与上面代码意思等效的代码吗?十分感谢

TOP

  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
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

5# hanyeguxing


谢谢。
顺便问一下。%~ni,%~di等从文件名中扩展的用法是不是只能用在for循环中?
如果不是的话,那在不在for中的用法是什么?
十分感谢....

TOP

示例:
  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
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表