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

[文件操作] 批处理如何统计多个子文件夹内文件格式/扩展名的种类与文件总大小

本帖最后由 pcl_test 于 2016-8-23 00:34 编辑

各位大神好,个人没什么语言基础,先学先卖,对比法尝试自己做了一个批处理,已经实现了我想要的一般功能,但是仍然不够完善,希望大神指点。

1,实现统计文件夹中所有文件的格式与数量【已实现】
2,实现统计文件夹中所有文件的总大小,即为文件夹的大小是多少,需要精确到KB,MB,GB
3,实现父文件夹下所有文件夹可批量统计数据后生产文本并自动保存到子文件夹中

以上的要求不知道批处理能否实现,有点奢望了,请大神指点,感谢。
  1. @echo off
  2. for /r %%i in (*) do set/a %%~xi+=1
  3. (
  4.     for /f "tokens=1-2 delims==" %%a in ('set .') do (
  5.         echo,%%b个%%a
  6.         set/an个=1
  7.     )
  8.    
  9. )>统计结果.txt
  10. start "" "统计结果.txt"
复制代码
1

评分人数

    • pcl_test: 发帖前先使用论坛搜索PB -2

  1. ──a
  2.     └─b
  3.         │  1.rar
  4.         │
  5.         └─c
  6.                 1.reg
  7.                 1.txt
  8.                 2.txt
复制代码
多层文件夹的如何统计?假设a为父文件夹,那么b如何统计?

TOP

本帖最后由 asdasd 于 2016-8-23 09:54 编辑

回复 2# pcl_test

直接统计B的文件夹大小与类型数量后生成TXT文本到B的文件夹中。

大概有点误会了,不是直接统计目录树,也不是统计多层文件夹,是需要精确的数字生成到文本,与您之前写过的一个重命名文件夹显示数量与大小类似

其实相当于统计每个文件夹的大小之后生成到TXT文本,我的想法是可以拉入文件夹到批处理后批量统计出来。

TOP

本帖最后由 asdasd 于 2016-8-23 09:38 编辑

回复 2# pcl_test

论坛搜索过很多次了,没有相关实例啊,求解决问题,感谢ing

TOP

就是不分层次的,对所有文件类型做分类统计嘛。这么简单的东西 —— 我才不会 (逃

TOP

回复 5# 523066680

分类统计后需要精确到KB/mb/gb,这个感觉有点困难,大概对您比较简单吧,有空的话麻烦您解答下,感谢。

TOP

TOP

回复 3# asdasd

换种问法吧,对于2楼中的举例,
1、不考虑对c的统计,直接统计b文件夹结果为rar和一个文件大小
2、b和c都统计,c文件统计结果为reg、txt和三个文件的大小,b文件夹结果为1)rar和一个文件大小 2)rar和四个文件大小 3)reg、txt、rar和四个文件大小
所以,楼主针对2楼中的举例,说清楚你希望的统计结果是怎样的

TOP

回复 8# pcl_test



  我希望统计出来的格式是: 1个JPG,2个RAR,3个BMP  文件大小:20MB


  统计一个文件夹中的所有文件按照格式分类数量出来后再统计所有文件的文件大小。

TOP

回复 9# asdasd

呵呵

TOP

回复 10# pcl_test


唉,不知道能否帮忙下,谢谢

TOP

回复 10# pcl_test


    求大神帮帮忙,真的很重要的事情

TOP

test.ps1
  1. function formatSize($n){
  2.     if($n -ge 1gb){
  3.         $s = ($n/1gb).ToString('0.0') + 'GB'
  4.     }elseif($n -ge 1mb){
  5.         $s = ($n/1mb).ToString('0.0') + 'MB'
  6.     }elseif($n -ge 1kb){
  7.         $s = ($n/1kb).ToString('0.0') + 'KB'
  8.     }else {$s = '' + $n + 'B'}
  9.     return '共计' + $s
  10. }
  11. $arr = dir 'D:\Test\*' -Recurse -Force | ?{ $_ -is [IO.FileInfo] }
  12. $arr | group Extension | %{'' + $_.Count + '个' + $(if($_.Name){$_.Name -replace '\.'}else{'无扩展名'})} > D:\结果.Log
  13. formatSize(($arr | measure Length -Sum).Sum) >> D:\结果.Log
复制代码

TOP

回复 12# asdasd
你的要求怎么这么奇怪。

TOP

返回列表