Board logo

标题: [文件操作] 【已解决】批处理如何统计不同前缀文件名的的文件数量? [打印本页]

作者: bataiping    时间: 2018-9-5 22:14     标题: 【已解决】批处理如何统计不同前缀文件名的的文件数量?

本帖最后由 bataiping 于 2018-9-6 18:35 编辑

某文件夹下有以下图片(实际有数千至数万张):
打印_18885-1.jpg
打印_18885-2.jpg
打印_18885-3.jpg
打印_18886-1.jpg
打印_18886-2.jpg
打印_18887.jpg
打印_18888.jpg
打印_18889-1.jpg
打印_18889-2.jpg
打印_18890-1.jpg
打印_18890-2.jpg
...

想要返回结果:“前8位文件名 页数”,如下:
打印_18885 3
打印_18886 2
打印_18887 1
打印_18888 1
打印_18889 2
打印_18890 2


谢大神指教!!!
作者: bataiping    时间: 2018-9-5 23:09

我现在是先获取全部文件名,输入到txt,然后复制到excel里面用函数截取和统计,感觉好累
作者: ai20110304    时间: 2018-9-6 00:22

  1. @echo off & setlocal enabledelayedexpansion
  2. cd /d %~dp0
  3. ::去重,保留唯一前缀名
  4. for /f "delims=-" %%i in ('dir /b /a-d *.jpg') do (
  5. if "!str!" neq "%%~ni"  set /a "n+=1" & set "a!n!=%%~ni" & set "str=%%~ni"
  6. )
  7. REM echo;n=%n%
  8. (for /l %%i in (1 1 %n%) do (
  9. REM echo;!a%%i!   ==== %%i
  10. for /f "delims=" %%x in ('dir /b /a-d *.jpg ^|find /c "!a%%i!"') do echo;!a%%i! 页数:%%x
  11. ))>list.txt
  12. pause>nul
复制代码

作者: bataiping    时间: 2018-9-6 08:48

回复 3# ai20110304


    测试,输出了完整文件名 及页数,并没有截取前面指定位数,是不是有什么地方需要我手动改的
作者: WHY    时间: 2018-9-6 08:53

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (
  4.     for %%i in ( 打印_*.jpg ) do (
  5.         rem s1=当前行
  6.         set "s1=%%i"
  7.         if not "!s1:~0,8!" == "!s2:~0,8!" (
  8.             if defined s2 (echo;!s2:~0,8! !n!)
  9.             if not "!n!" == "1" (set n=1)
  10.         ) else (set /a n+=1)
  11.         rem s2=上一行
  12.         set "s2=%%i"
  13.     )
  14.     if defined s2 (echo;!s2:~0,8! !n!)
  15. ) > Result.Log
  16. pause
复制代码

作者: WHY    时间: 2018-9-6 08:55

本帖最后由 WHY 于 2018-9-6 08:58 编辑
  1. PowerShell "dir '打印_[0-9][0-9][0-9][0-9][0-9]*.jpg' | group{$_.Name.SubString(0,8)} | ForEach{$_.Name + ' ' + $_.Count}" > 1.LOG
复制代码

作者: bataiping    时间: 2018-9-6 09:04

回复 5# WHY


    好用,谢谢
作者: bataiping    时间: 2018-9-6 18:36

WHY 发表于 2018-9-6 08:55

请问这个在xp上能用吗?
作者: Batcher    时间: 2018-9-6 19:08

回复 8# bataiping


    建议亲自测试一下,遇到问题再讨论。
作者: ai20110304    时间: 2018-9-6 20:26

本帖最后由 ai20110304 于 2018-9-6 20:27 编辑

回复 4# bataiping


   功能明明实现了的。你把页数那几字去掉就行。   “页数:” 只是我给你添加上去好看的。哎。看来适合把原原本本的发给你才觉得实现了
作者: WHY    时间: 2018-9-7 10:28

回复 10# ai20110304


    有可能楼主在顶楼给的数据都是凭空捏造的吧,文件名并不包含 "-" 字符,用 delims 分割后任然输出了 "完整文件名"。
如果文件数目过多(顶楼说是数万),定义成千上万个变量不太合适,可能会影响执行效率。
作者: bataiping    时间: 2018-10-17 19:15

回复 10# ai20110304

抱歉这么久才回复您,测试可用,功能实现正常,谢谢!
作者: bataiping    时间: 2018-10-17 19:16

回复 11# WHY


    是的,效率问题很明显




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