Board logo

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

作者: chouxia    时间: 2014-10-4 16:05     标题: 【已解决】批处理命令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
作者: DAIC    时间: 2014-10-4 21:33

@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!
                )
            )
        )
    )
)
作者: chouxia    时间: 2014-10-7 12:25

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




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