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

[文件操作] 【已解决】批处理如何统计不同前缀文件名的的文件数量?

本帖最后由 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


谢大神指教!!!
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

我现在是先获取全部文件名,输入到txt,然后复制到excel里面用函数截取和统计,感觉好累

TOP

  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
复制代码
我就是我,不一样的烟火!

TOP

回复 3# ai20110304


    测试,输出了完整文件名 及页数,并没有截取前面指定位数,是不是有什么地方需要我手动改的

TOP

  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
复制代码
1

评分人数

TOP

本帖最后由 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
复制代码

TOP

回复 5# WHY


    好用,谢谢

TOP

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

请问这个在xp上能用吗?

TOP

回复 8# bataiping


    建议亲自测试一下,遇到问题再讨论。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

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

回复 4# bataiping


   功能明明实现了的。你把页数那几字去掉就行。   “页数:” 只是我给你添加上去好看的。哎。看来适合把原原本本的发给你才觉得实现了
我就是我,不一样的烟火!

TOP

回复 10# ai20110304


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

TOP

回复 10# ai20110304

抱歉这么久才回复您,测试可用,功能实现正常,谢谢!

TOP

回复 11# WHY


    是的,效率问题很明显

TOP

返回列表