标题: [文件操作] 【已解决】批处理如何统计不同前缀文件名的的文件数量? [打印本页]
作者: 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
- @echo off & setlocal enabledelayedexpansion
- cd /d %~dp0
-
- ::去重,保留唯一前缀名
- for /f "delims=-" %%i in ('dir /b /a-d *.jpg') do (
- if "!str!" neq "%%~ni" set /a "n+=1" & set "a!n!=%%~ni" & set "str=%%~ni"
- )
-
- REM echo;n=%n%
- (for /l %%i in (1 1 %n%) do (
- REM echo;!a%%i! ==== %%i
- for /f "delims=" %%x in ('dir /b /a-d *.jpg ^|find /c "!a%%i!"') do echo;!a%%i! 页数:%%x
- ))>list.txt
-
- pause>nul
复制代码
作者: bataiping 时间: 2018-9-6 08:48
回复 3# ai20110304
测试,输出了完整文件名 及页数,并没有截取前面指定位数,是不是有什么地方需要我手动改的
作者: WHY 时间: 2018-9-6 08:53
- @echo off
- setlocal enabledelayedexpansion
-
- (
- for %%i in ( 打印_*.jpg ) do (
- rem s1=当前行
- set "s1=%%i"
-
- if not "!s1:~0,8!" == "!s2:~0,8!" (
- if defined s2 (echo;!s2:~0,8! !n!)
- if not "!n!" == "1" (set n=1)
- ) else (set /a n+=1)
-
- rem s2=上一行
- set "s2=%%i"
- )
- if defined s2 (echo;!s2:~0,8! !n!)
-
- ) > Result.Log
-
- pause
复制代码
作者: WHY 时间: 2018-9-6 08:55
本帖最后由 WHY 于 2018-9-6 08:58 编辑
- 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 |