标题: [文件操作] 批处理如何实现对文件夹包括子文件夹下所有类型的文件分别统计数量和总大小 [打印本页]
作者: zhou_196 时间: 2016-4-28 10:33 标题: 批处理如何实现对文件夹包括子文件夹下所有类型的文件分别统计数量和总大小
本帖最后由 pcl_test 于 2016-4-28 20:23 编辑
现有代码可以统计文件夹下所有类型,然而现在需要分别统计各个类型的总数量和总大小,求解。- @echo off
- (for /r %%i in (*) do (
- if not defined %%~xi set %%~xi=a&set /a n+=1&echo;%%~xi
- ))>d.txt
- >>d.txt echo 共有 %n% 种类型的文件
- start d.txt
复制代码
作者: Nsqs 时间: 2016-4-28 14:51
本帖最后由 Nsqs 于 2016-4-28 15:15 编辑
- @echo off
- (for /r %%i in (*) do (
- if not defined %%~xi (
- set %%~xi=a&set/a c+=1
- for /r %%j in (*%%~xi)do (set/a n+=1)
- call echo %%~xi :[%%n%%]
- set n=0
- )
- ))>d.txt
- >>d.txt echo 共有 %c% 种类型的文件
- start d.txt
复制代码
作者: flyinnet9 时间: 2016-4-28 16:12
- @echo off
- setlocal ENABLEDELAYEDEXPANSION
- for /r %%a in (*) do (
- if not defined %%~xa (
- set /a n+=1
- set /a #%%~xa+=1
- set %%~xa=1
- set _%%~xa=%%~za
- ) else (
- set /a _%%~xa=!_%%~xa!+%%~za
- set /a #%%~xa+=1
- )
- )
- echo.共有 !n! 种文件,其中:
- for /f "tokens=1-2 delims=#=" %%a in ('set #') do set %%a=%%b
- for /f "tokens=1-2 delims=_=" %%a in ('set _') do echo.%%a 文件共有 !%%a! 个,共 %%b 字节
- pause
复制代码
作者: pcl_test 时间: 2016-4-29 00:27
本帖最后由 pcl_test 于 2016-4-29 21:20 编辑
- /*&cls
- @echo off
- (for /f "delims=" %%a in ('dir /a-d/b/s^^^|find /v "%~nx0"') do @echo;%%~nxa*%%~za)|cscript -nologo -e:jscript "%~f0"
- pause&exit
- */
-
- function FormatSize(val){
- var s = '', val = Number(val);
- if(val >= 1125899906842624)
- s = parseInt((val/1125899906842624)*100)/100 +' PB';
- else if(val >= 1099511627776)
- s = parseInt((val/1099511627776)*100)/100 +' TB';
- else if (val >= 1073741824)
- s = parseInt((val/1073741824)*100)/100 +' GB';
- else if (val >= 1048576)
- s = parseInt((val/1048576)*100)/100 +' MB';
- else if (val >= 1024)
- s = parseInt((val/1024)*100)/100 +' KB';
- else s = val+' 字节';
- return s;
- }
-
- var files = WSH.StdIn.ReadAll().split(/\r\n/);
- var count = {}, size = {};
- for(var i = 0; i<files.length; i++){
- var f = files[i].split('*');
- var ext = /\./.test(f[0])?f[0].replace(/.+(\.[^\.]+)/, '$1'):f[0];
- var ext = ext.toLowerCase();
- count[ext]?count[ext]++:count[ext]=1;
- size[ext]?size[ext]+=Number(f[1]):size[ext]=Number(f[1]);
- }
-
- var n = m = sum =0, txt = '';
- for (var e in count){
- /\./.test(e)?n++:m++;
- sum+=size[e];
- txt +=e +'\t'+ count[e] +'\t'+ FormatSize(size[e]) +'\r\n';
- }
- var txt = txt+ '共' +n+ '种类型,';
- if(m>0)txt += m +'个无扩展名的文件,';
- WSH.echo(txt +'总大小'+ FormatSize(sum));
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |