标题: [文件操作] 批处理如何统计多个子文件夹内文件格式/扩展名的种类与文件总大小 [打印本页]
作者: asdasd 时间: 2016-8-23 00:00 标题: 批处理如何统计多个子文件夹内文件格式/扩展名的种类与文件总大小
本帖最后由 pcl_test 于 2016-8-23 00:34 编辑
各位大神好,个人没什么语言基础,先学先卖,对比法尝试自己做了一个批处理,已经实现了我想要的一般功能,但是仍然不够完善,希望大神指点。
1,实现统计文件夹中所有文件的格式与数量【已实现】
2,实现统计文件夹中所有文件的总大小,即为文件夹的大小是多少,需要精确到KB,MB,GB
3,实现父文件夹下所有文件夹可批量统计数据后生产文本并自动保存到子文件夹中
以上的要求不知道批处理能否实现,有点奢望了,请大神指点,感谢。- @echo off
- for /r %%i in (*) do set/a %%~xi+=1
- (
- for /f "tokens=1-2 delims==" %%a in ('set .') do (
- echo,%%b个%%a
- set/an个=1
- )
-
- )>统计结果.txt
- start "" "统计结果.txt"
复制代码
作者: pcl_test 时间: 2016-8-23 00:41
- ──a
- └─b
- │ 1.rar
- │
- └─c
- 1.reg
- 1.txt
- 2.txt
复制代码
多层文件夹的如何统计?假设a为父文件夹,那么b如何统计?
作者: asdasd 时间: 2016-8-23 09:32
本帖最后由 asdasd 于 2016-8-23 09:54 编辑
回复 2# pcl_test
直接统计B的文件夹大小与类型数量后生成TXT文本到B的文件夹中。
大概有点误会了,不是直接统计目录树,也不是统计多层文件夹,是需要精确的数字生成到文本,与您之前写过的一个重命名文件夹显示数量与大小类似
其实相当于统计每个文件夹的大小之后生成到TXT文本,我的想法是可以拉入文件夹到批处理后批量统计出来。
作者: asdasd 时间: 2016-8-23 09:36
本帖最后由 asdasd 于 2016-8-23 09:38 编辑
回复 2# pcl_test
论坛搜索过很多次了,没有相关实例啊,求解决问题,感谢ing
作者: 523066680 时间: 2016-8-23 09:43
就是不分层次的,对所有文件类型做分类统计嘛。这么简单的东西 —— 我才不会 (逃
作者: asdasd 时间: 2016-8-23 09:47
回复 5# 523066680
分类统计后需要精确到KB/mb/gb,这个感觉有点困难,大概对您比较简单吧,有空的话麻烦您解答下,感谢。
作者: GNU 时间: 2016-8-23 11:44
回复 6# asdasd
KB、MB、GB的几个例子可以参考一下
http://bbs.bathome.net/thread-35936-1-1.html
http://bbs.bathome.net/thread-30334-1-1.html
http://bbs.bathome.net/thread-13307-1-1.html
作者: pcl_test 时间: 2016-8-23 11:53
回复 3# asdasd
换种问法吧,对于2楼中的举例,
1、不考虑对c的统计,直接统计b文件夹结果为rar和一个文件大小
2、b和c都统计,c文件统计结果为reg、txt和三个文件的大小,b文件夹结果为1)rar和一个文件大小 2)rar和四个文件大小 3)reg、txt、rar和四个文件大小
所以,楼主针对2楼中的举例,说清楚你希望的统计结果是怎样的
作者: asdasd 时间: 2016-8-23 11:56
回复 8# pcl_test
我希望统计出来的格式是: 1个JPG,2个RAR,3个BMP 文件大小:20MB
统计一个文件夹中的所有文件按照格式分类数量出来后再统计所有文件的文件大小。
作者: pcl_test 时间: 2016-8-23 12:12
回复 9# asdasd
呵呵
作者: asdasd 时间: 2016-8-23 12:22
回复 10# pcl_test
唉,不知道能否帮忙下,谢谢
作者: asdasd 时间: 2016-8-24 16:55
回复 10# pcl_test
求大神帮帮忙,真的很重要的事情
作者: WHY 时间: 2016-8-24 19:19
test.ps1- function formatSize($n){
- if($n -ge 1gb){
- $s = ($n/1gb).ToString('0.0') + 'GB'
- }elseif($n -ge 1mb){
- $s = ($n/1mb).ToString('0.0') + 'MB'
- }elseif($n -ge 1kb){
- $s = ($n/1kb).ToString('0.0') + 'KB'
- }else {$s = '' + $n + 'B'}
- return '共计' + $s
- }
- $arr = dir 'D:\Test\*' -Recurse -Force | ?{ $_ -is [IO.FileInfo] }
- $arr | group Extension | %{'' + $_.Count + '个' + $(if($_.Name){$_.Name -replace '\.'}else{'无扩展名'})} > D:\结果.Log
- formatSize(($arr | measure Length -Sum).Sum) >> D:\结果.Log
复制代码
作者: happy886rr 时间: 2016-8-24 20:18
回复 12# asdasd
你的要求怎么这么奇怪。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |