Board logo

标题: [文件操作] [已解决]批处理怎样递归统计文件夹及子文件夹的文件数量? [打印本页]

作者: waterwm    时间: 2011-3-22 00:17     标题: [已解决]批处理怎样递归统计文件夹及子文件夹的文件数量?

本帖最后由 waterwm 于 2011-5-11 00:56 编辑

我有下列桥文件夹

1号桥
2号桥
3号桥
4号桥
5号桥
6号桥
7号桥
8号桥
9号桥

每座桥文件夹里面有各个桥墩文件夹,1墩  2墩 …… 9墩  各墩台里有命名规则为 父文件夹.01.jpg格式, 如1号桥.01.jpg  1号桥.02.jpg等图片。


如何用批处理查找得到一个统计结果,只查找01编号的照片,如下所示:


  1号桥  共2墩有照片
  2号桥  共4墩有照片
  3号桥  共6墩有照片
  4号桥  共8墩有照片
  5号桥  共3墩有照片
  6号桥  共3墩有照片
  7号桥  共4墩有照片
  8号桥  共5墩有照片
  9号桥  共8墩有照片
     合计:43墩


以上桥的桥名及子目录名称,目录层深不固定,要用递归方式去查找。请各位帮忙!谢谢

要实现不论子目录在第几层深,都要能统计出来。
目前仅实现查找全部桥的合计墩台个数。
  1. @echo off
  2. color 8f
  3. title 查找墩台照片数量
  4. cd %~dp0
  5. dir /W /B /S "" | find /C /N /I ".01.JPG">D:\_tmp.txt
  6. set /p c=<D:\_tmp.txt
  7. del D:\_tmp.txt
  8. cls
  9. echo.
  10. echo                           共查找到 %c% 个墩台照片
  11. echo.
  12. pause
复制代码

作者: wc726842270    时间: 2011-3-22 03:02

本帖最后由 wc726842270 于 2011-3-22 11:04 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=0
  3. if exist "%~pd01.txt" del "%~pd01.txt"
  4. for /l %%a in (1 1 3 ) do (
  5.   cd /d "%~pd0%%a号桥"
  6.   (for /f "delims=" %%i in ('dir /a-d /s *.jpg^|findstr /ic:"jpg"') do set /a n+=1
  7.   )&echo %%a号桥 共有!n!照片 >>"%~pd0\1.txt"&&set n=0
  8. )
  9. pause
复制代码
理解的有些错误,
作者: 随风    时间: 2011-3-22 09:54

本帖最后由 随风 于 2011-3-22 09:56 编辑
  1. @echo off
  2. for /r %%i in (*) do (
  3.    if /i "%%~nxi"=="01.jpg" (
  4.       for /f "tokens=2 delims=\" %%j in ("%%i") do set /a .%%j+=1
  5.     )
  6. )
  7. for /f "tokens=1* delims=.=" %%a in ('set .') do echo %%a 共%%b墩有照片
  8. pause
复制代码

作者: CrLf    时间: 2011-3-22 12:39

  1. @echo off
  2. for /f %%a in ('dir /s /b *.01.jpg') do set /a n+=1
  3. echo 共%n%墩有照片
复制代码

作者: caruko    时间: 2011-3-22 13:14

本帖最后由 caruko 于 2011-3-22 13:15 编辑

放在桥文件夹同一目录
  1. @echo off&setlocal enabledelayedexpansion
  2. set /a m=0
  3. for /d %%d in (*) do (
  4.        pushd "%%d"
  5.        set /a n=0
  6.        for /f %%i in ('dir /s /b *.01.jpg') do set n+=1
  7.        set /a m+=n
  8.        echo %%d 共!n!墩有照片!
  9.      popd
  10. )
  11. echo       合计:!m!墩
复制代码

作者: waterwm    时间: 2011-5-11 00:56

  1. @echo off&setlocal enabledelayedexpansion
  2. set /a m=0
  3. for /d %%d in (*) do (
  4.        pushd "%%d"
  5.        set /a n=0
  6.        for /f %%i in ('dir /s /b *.01.jpg') do set /a n+=1
  7.        set /a m+=n
  8.        echo %%d 共!n!墩有照片!
  9.      popd
  10. )
  11. echo       合计:!m!墩
复制代码
上面代码测试成功。不过兄台少了一个 set /a n+=1   中的/a ,让我想了很久才搞明白,谢谢各位。




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