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

[其他] [已解决] 批处理如何统计指定文件下图片文件的数量和有标记的图片的数量?

  1. @echo off
  2. set n=0
  3. set m=0
  4. for /f "delims=" %%a in ('dir /s /a-d /b *.jpg') do (
  5. set /a n+=1
  6. more "%%a" | find "rdf:Bag" >nul && set /a m+=1
  7. )
  8. set /a t=%n%-%m%
  9. echo 该目录下共有%n%张JPG图片,其中%m%张有标记,%t%张无标记>"共有%n%张JPG图片,其中%m%张有标记,%t%张无标记.txt"
  10. exit
复制代码
以上代码只能执行同一个目录下的有一个子文件夹下有好几个文件夹的批处理。

可否实现一个文件夹中有多个子文件夹,下面多很多很多个子文件夹都能通用的呢?需要改哪一个的代码?
1

评分人数

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

来学习一下

TOP

回复 25# pcl_test


    非常感谢,终于可以了。代码在测试中,暂时没有问题。

TOP

回复 24# 228630386
回复 23# 228630386
使用CrLf  20楼的代码,你要运行完退出,只要改第6行代码为exit即可,即去掉pause &

TOP

回复 22# CrLf


    是喔,哪什么情况下可以自动关闭窗口呢? exit不可以的么?

TOP

回复 18# pcl_test


    http://pan.baidu.com/s/1kT67xVh
    亲,代码又遇到另一个问题,明明有标记,又被记录成没有标记了,这是有问题的图片。

TOP

回复 21# 228630386


    你改过代码了吧,我第 20 行没出现过 exit

TOP

回复 20# CrLf


    但为什么有时候会弹出错误信息? exit,不能自动关闭窗口?

TOP

来一个系统原生的办法
  1. 1>1/* :
  2. @echo off
  3. for /f "delims=" %%a in ('dir /a-d /b /s *.jpg ^| cscript -nologo -e:jscript "%~0"') do (
  4. echo %%a>"%%a.txt"
  5. )
  6. pause & exit /b
  7. */
  8. var filelist = WScript.StdIn.ReadAll().split(/\r?\n/)
  9. var fso = new ActiveXObject('Scripting.FileSystemObject')
  10. var shell = new ActiveXObject('Shell.Application')
  11. var FLAG=0,NOFLAG=0
  12. for(var i in filelist){
  13. var fullpath = fso.GetFile(filelist[i]).Path
  14. var namespace = shell.Namespace(fullpath.replace(/[^\\]*$/,''))
  15. var parsename = namespace.ParseName(fullpath.replace(/.*\\/,''))
  16. var value = namespace.GetDetailsOf(parsename,namespace.GetDetailsOf('',18)==='标记'?18:5)
  17. if(/\S/.test(value)){FLAG++}else{NOFLAG++}
  18. }
  19. WSH.Echo('该目录下共有'+(FLAG+NOFLAG)+'张JPG图片,其中'+FLAG+'张有标记,'+NOFLAG+'张无标记')
复制代码
2

评分人数

TOP

回复 18# pcl_test


    非常感谢,我明天回到公司再测试一下,辛苦两位大侠!!!

TOP

回复 17# 228630386
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set n=0
  4. set m=0
  5. for /f "delims=" %%a in ('dir /a-d /s /b *.jpg') do (
  6. set /a n+=1
  7. set str=
  8. for /f "delims=" %%b in ('findstr "rdf:Bag" "%%a"') do set str=%%b
  9. set str=!str: =!
  10. if "!str:~-8,-1!" == "rdf:Bag" set /a m+=1
  11. )
  12. set /a t=%n%-%m%
  13. echo 该目录下共有%n%张JPG图片,其中%m%张有标记,%t%张无标记
  14. pause
复制代码
1

评分人数

TOP

回复 16# pcl_test


    请问有办法解决么? 因为我们通常都是用中文来标记的,但有些图片他来身自带空格,如果这也记录上,对我们统计数据带来不便。

TOP

回复 15# 228630386
嗯,是图片问题,19张的标记为空格,而系统把空格也当成没有,所以看上去是没有标记,但实际是有的

TOP

回复 14# pcl_test


    链接: http://pan.baidu.com/s/1jG3R6mi 密码: iehs
    我已经将有问题的图片上传到云盘中,图片共有57张JPG没错,但是图片一个标记也有没有,但两个命令都统计出了相同的标记数量,是图片的问题吗?

TOP

回复 13# 228630386
你看看这样列出的有标记的图片跟实际是否对得上?对不上的打包共享网盘发出来看看
  1. @echo off
  2. (for /f "delims=" %%a in ('findstr /s /m "rdf:Bag" *.jpg') do set /a 含标记+=1 & echo %%a
  3. for /f "delims=" %%b in ('findstr /s /m . *.jpg') do set /a 总数+=1
  4. set /a 无标记=总数-含标记
  5. echo 该目录下共有%总数%张JPG图片,其中%含标记%张有标记,%无标记%张无标记)>统计信息.txt
复制代码

TOP

返回列表