找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27651|回复: 10

[文件操作] [已解决]批处理如何统计多年份并含有关键字的文件个数?

[复制链接]
发表于 2015-10-12 19:43:39 | 显示全部楼层 |阅读模式
请教大家,希望能够有高手可以解决。
题目:有很多文件在同一个目录下,但是要区分年份和保管期限,单独的,在下会写,可把年份叠加怎么弄?

  1. @echo off
  2. for /r %%a in (*-2001-永久-*.jpg) do (
  3.    set /a num01+=1
  4. )
  5. for /r %%b in (*-2001-长期-*.jpg) do (
  6.    set /a num02+=1
  7. )
  8. echo 2001年永久%num01%件
  9. echo 2001年长期%num02%件
  10. pause
复制代码
如果我要统计从1960年到2015年的永久和长期的数量,岂不是要一个个写了烦死?能否有简便的方法,望赐教。
 楼主| 发表于 2015-10-12 19:52:33 | 显示全部楼层
我好像研究出来了。
发表于 2015-10-12 19:55:51 | 显示全部楼层
  1. for /l %%i in (1960,1,2015) do ……
复制代码
 楼主| 发表于 2015-10-12 20:00:12 | 显示全部楼层
回复 3# pcl_test


    我试试看。谢谢啊。但是好像不太行,因为还要是识别保管期限。
 楼主| 发表于 2015-10-12 20:28:20 | 显示全部楼层
回复 3# pcl_test

  1. @echo off
  2. for %%i in (*.jpg) do (
  3.     for /f "tokens=1-4 delims=-" %%a in ("%%i") do (
  4.         for /r %%k in (*-%%b-%%c-*.jpg) do (
  5.                    set /a num+=1
  6.         )
  7.     echo %%b年期限%%c有%num%件
  8.    )
  9. )
  10. pause
复制代码
我想让年度和保管期限都成变量,可否?
 楼主| 发表于 2015-10-12 21:02:47 | 显示全部楼层
本帖最后由 pcl_test 于 2015-10-12 21:13 编辑

回复 3# pcl_test


年份显示不出来,求帮助。

  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in (2001,1,2010) do (
  3.         for /r %%a in ("*-%%i-永久-*.jpg") do (
  4.                    set /a num01+=1
  5.         )
  6.         for /r %%b in ("*-%%i-长期-*.jpg") do (
  7.                    set /a num02+=1
  8.         )
  9. )
  10. echo %i%年永久%num01%件
  11. echo %i%年长期%num02%件
  12. pause
复制代码
发表于 2015-10-12 21:14:57 | 显示全部楼层
本帖最后由 pcl_test 于 2015-10-12 21:16 编辑

回复 6# playinthesky
  1. @echo off
  2. for /l %%i in (2001,1,2010) do (
  3.         setlocal enabledelayedexpansion
  4.         for /r %%a in ("*-%%i-永久-*.jpg") do set /a num01+=1
  5.         for /r %%b in ("*-%%i-长期-*.jpg") do set /a num02+=1
  6.         echo %%i年永久!num01!件
  7.         echo %%i年长期!num02!件
  8.         endlocal
  9. )
  10. pause
复制代码
发表于 2015-10-12 21:29:53 | 显示全部楼层
这样是否快点呢
  1. dir /s /b /a-d "*-%%i-永久-*.jpg" |find /v /c ""  
复制代码
 楼主| 发表于 2015-10-12 21:31:26 | 显示全部楼层
回复 7# pcl_test


    谢谢了,成功!么么哒!
 楼主| 发表于 2015-10-12 21:33:01 | 显示全部楼层
回复 8# terse


    我试试看!谢谢你!
发表于 2015-10-13 09:27:40 | 显示全部楼层
另外一种办法,用 dir + findstr 过滤
比如从1960年到2015年,分三段:1960~1999、2000~2009、2010~2015
  1. @echo off
  2. set "s=\-19[6-9][0-9]\-永久\-[^\\]*\.jpg \-200[0-9]\-永久\-[^\\]*\.jpg \-201[0-5]\-永久\-[^\\]*\.jpg"
  3. for /f %%i in ('dir /b /s /a-d^|findstr /i /e "%s% %s:永久=长期%"^|find /c /v ""') do set "num=%%i"
  4. echo %num%
  5. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 14:42 , Processed in 0.019484 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表