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

[文本处理] 【已解决】批处理命令for怎样扫描指定的文件夹及其子目录下的配置文件?

本帖最后由 chouxia 于 2014-10-28 08:15 编辑

想实现这一的功能,批处理扫描指定的文件夹及其子目录下的配置文件,输出内容含有rendering=0的文件
把这个文件中指定的行赋值给变量
显示变量内容。
我写的代码如下:
  1. @echo off
  2. cd \work
  3. for /f %%z in ('findstr /s /i /m "rendering=0" *.*') do (
  4. for /f "tokens=1,* delims=="  %%a in ('find "fts" ^< %%z') do (
  5. for /f "tokens=1,* delims=="  %%c in ('find "inipath" ^< %%z') do (
  6. for /f "tokens=1,* delims=="  %%e in ('find "cam" ^< %%z') do (
  7. for /f "tokens=1,* delims=="  %%g in ('find "arjpath" ^< %%z') do (
  8. set v=%%b
  9. set w=%%d
  10. set x=%%f
  11. set y=%%h
  12. echo %v% %w% %x%  %y%
  13. )
  14. )
  15. )
  16. )
  17. )
复制代码
悲剧的是,程序只输出findstr 的最后一个路径。过程路径一个都没有。
输出结果如下(work目录下有4个符合要求的子目录):
19854  v:\work\ddd\  HP  c611.arj
19854  v:\work\ddd\  HP  c611.arj
19854  v:\work\ddd\  HP  c611.arj
19854  v:\work\ddd\  HP  c611.arj

@echo off
setlocal enabledelayedexpansion
cd \work
for /f %%z in ('findstr /s /i /m "rendering=0" *.*') do (
    for /f "tokens=1,* delims=="  %%a in ('find "fts" ^< %%z') do (
        for /f "tokens=1,* delims=="  %%c in ('find "inipath" ^< %%z') do (
            for /f "tokens=1,* delims=="  %%e in ('find "cam" ^< %%z') do (
                for /f "tokens=1,* delims=="  %%g in ('find "arjpath" ^< %%z') do (
                    set v=%%b
                    set w=%%d
                    set x=%%f
                    set y=%%h
                    echo !v! !w! !x! !y!
                )
            )
        )
    )
)

TOP

感谢你的帮助。这个地方正好是我的短板。
好长时间不玩批处理了。
貌似很多东西都不太了解了

TOP

返回列表