标题: [文件操作] [已解决]批处理如何统计多年份并含有关键字的文件个数? [打印本页]
作者: playinthesky 时间: 2015-10-12 19:43 标题: [已解决]批处理如何统计多年份并含有关键字的文件个数?
请教大家,希望能够有高手可以解决。
题目:有很多文件在同一个目录下,但是要区分年份和保管期限,单独的,在下会写,可把年份叠加怎么弄?- @echo off
- for /r %%a in (*-2001-永久-*.jpg) do (
- set /a num01+=1
- )
- for /r %%b in (*-2001-长期-*.jpg) do (
- set /a num02+=1
- )
- echo 2001年永久%num01%件
- echo 2001年长期%num02%件
- pause
复制代码
如果我要统计从1960年到2015年的永久和长期的数量,岂不是要一个个写了烦死?能否有简便的方法,望赐教。
作者: playinthesky 时间: 2015-10-12 19:52
我好像研究出来了。
作者: pcl_test 时间: 2015-10-12 19:55
- for /l %%i in (1960,1,2015) do ……
复制代码
作者: playinthesky 时间: 2015-10-12 20:00
回复 3# pcl_test
我试试看。谢谢啊。但是好像不太行,因为还要是识别保管期限。
作者: playinthesky 时间: 2015-10-12 20:28
回复 3# pcl_test - @echo off
- for %%i in (*.jpg) do (
- for /f "tokens=1-4 delims=-" %%a in ("%%i") do (
- for /r %%k in (*-%%b-%%c-*.jpg) do (
- set /a num+=1
- )
- echo %%b年期限%%c有%num%件
- )
- )
- pause
复制代码
我想让年度和保管期限都成变量,可否?
作者: playinthesky 时间: 2015-10-12 21:02
本帖最后由 pcl_test 于 2015-10-12 21:13 编辑
回复 3# pcl_test
年份显示不出来,求帮助。- @echo off&setlocal enabledelayedexpansion
- for /l %%i in (2001,1,2010) do (
- for /r %%a in ("*-%%i-永久-*.jpg") do (
- set /a num01+=1
- )
- for /r %%b in ("*-%%i-长期-*.jpg") do (
- set /a num02+=1
- )
- )
- echo %i%年永久%num01%件
- echo %i%年长期%num02%件
- pause
复制代码
作者: pcl_test 时间: 2015-10-12 21:14
本帖最后由 pcl_test 于 2015-10-12 21:16 编辑
回复 6# playinthesky - @echo off
- for /l %%i in (2001,1,2010) do (
- setlocal enabledelayedexpansion
- for /r %%a in ("*-%%i-永久-*.jpg") do set /a num01+=1
- for /r %%b in ("*-%%i-长期-*.jpg") do set /a num02+=1
- echo %%i年永久!num01!件
- echo %%i年长期!num02!件
- endlocal
- )
- pause
复制代码
作者: terse 时间: 2015-10-12 21:29
这样是否快点呢- dir /s /b /a-d "*-%%i-永久-*.jpg" |find /v /c ""
复制代码
作者: playinthesky 时间: 2015-10-12 21:31
回复 7# pcl_test
谢谢了,成功!么么哒!
作者: playinthesky 时间: 2015-10-12 21:33
回复 8# terse
我试试看!谢谢你!
作者: WHY 时间: 2015-10-13 09:27
另外一种办法,用 dir + findstr 过滤
比如从1960年到2015年,分三段:1960~1999、2000~2009、2010~2015- @echo off
- set "s=\-19[6-9][0-9]\-永久\-[^\\]*\.jpg \-200[0-9]\-永久\-[^\\]*\.jpg \-201[0-5]\-永久\-[^\\]*\.jpg"
- for /f %%i in ('dir /b /s /a-d^|findstr /i /e "%s% %s:永久=长期%"^|find /c /v ""') do set "num=%%i"
- echo %num%
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |