批处理统计文件夹内的所有文件的数量和总大小的bat
我最近电脑不知道为什么磁盘空间会慢慢的变小,而且过一段时间之后,又会有两三GB的空间被释放出来,使用我想监控下,看看是那个文件夹下产生的文件来占用我的存储空间,我想按层监视,最终找出原因。
从网上找个命令行显示指定文件夹目录的大小的批处理程序,但是发现并不太尽人意,总感觉不是很适合我的使用;
第一个程序,可以显示某个文件夹下的文件大小,但是我想按层显示,却不能满足我的要求,程序如下:
@echooff echo. set/pdirPath=pleaseinputfolderpath: set/as=1024*1024*1024 for/f"tokens=3delims="%%iin('dir/s/a/-c"%dirPath%"^|findstr个文件')do(setz=%%i) echo. echo文件夹:%dirPath% setd=bit if%z%gtr1024set/a"z>>=10"&setd=KB if%z%gtr1024set/a"z>>=10"&setd=MB if%z%gtr1024set/a"z>>=10"&setd=GB echo的总大小是:%z%%d%&echo. if%z%LSS%s%echo该文件夹内容小于1G pause>nul
第二个程序的,可以显示当前文件夹下的层级目录,但没有循环每一次下文件夹的大小,程序如下:
@echooff setlocalenabledelayedexpansion (for/d%%ain(C:\KuGou\*)do( set/an=z=0 pushd"%%a" for%%bin(*.*.)do( set/an+=1,z+=%%~zb ) set/a"z>>=20" popd echo;%%a[!n!个!z!M] ))>统计结果.txt pause
通过上面的两个程序,我整合了一下,打算合成一个程序,应该就和我需要的程序差不多了,说干就干,下面看看我的程序:
@echooff setlocalenabledelayedexpansion echo. set/pdirPath=pleaseinputfolderpath: echo%dirPath% echo. for/d%%ain(%dirPath%\*)do( set/azz=0 for/f"tokens=3delims="%%tin('dir/s/a/-c"%%a"^|findstr个文件')do( setzz=%%t ) setd=bit if!zz!GEQ1024set/a"z1=!zz!>>10"&setd=KB if!z1!GEQ1024set/a"z2=!z1!>>10"&setd=KB if!z2!GEQ1024set/a"z3=!z2!>>10"&setd=KB echo文件夹:%%a,大小是:!z3!GB=!z2!MB=!z1!!d! ) for/f"tokens=1-4delims="%%iin('dir/a/-c%dirPath%^|findstr个文件')do( set/ass=%%k set/ass>>=10,d=bit if!ss!GEQ1024set/a"s1=!ss!>>10"&setd=KB if!s1!GEQ1024set/a"s2=!s1!>>10"&setd=KB if!s2!GEQ1024set/a"s3=!s2!>>10"&setd=KB echo在"%dirPath%"根目录下有%%i%%j,总共大小为:!s3!GB=!s2!MB=!s1!!d! ) pause
代码四:实现执行后统计文件夹内包含所有文件及所有子文件夹下的文件,以及子文件夹下的子文件夹下的文件,以及子文件夹下的子文件夹下的子文件夹下的文件
@echooff setlocalenabledelayedexpansion (for/f“delims=”%%iin('dir/s/b/l/ad')do( cd"%%~fsi" set/aa=0,n=0 for/f"delims="%%ain('dir/b/l/aa')do( set/aa+=1,n+=%%~za2>nul ) set/an/=1048576 echo.%%~fi:!a!:!n!MB ))>统计结果.txt pause
MB不支持小数位,文件过小会显示为零,可以删除
set/an/=1048576
并删除MB改为字节。
或者使用KB,修改为
set/an/=1024 echo.%%~fi:!a!:!n!KB
代码5:用纯批处理在数字计算上受限制,这个问题用批处理结合awk倒是简单:
需拖拽执行
#&cls&(for/f"delims="%%ain('dir/a-d/b/s%1')do@echo%%~za)|gawk-vpath=%~n1-f%0>con&pause&exit {sum+=$0} END{ printf"%s文件夹总大小为:\n%.2fbyte\n%.2fMB\n%.2fGB\n",path,sum,sum/1024/1024,sum/1024/1024/1024 }
gawk4.1.0下载地址:https://www.nhooo.com/softs/515570.html
程序也不多解释,大家一看就明白,只是把别人的东西组合在一起,调用方法:
一:双击执行,根据提示输入您需要建设的文件夹路径。
二:开始--运行--cmd,然后找到存放bat文件的地方,直接输入bat文件名就可以执行。
三:也可以直接输出到文件,例如:C:\>f3.bat>111.txt回车之后就只能看到光标一闪一闪的,这时你直接输入文件夹路径就可以了。
说明:如果采用输出到文件的形式,最后把代码最后的pause行(暂停代码)删除,这样当程序执行完后会自动退出,不会一直停留在程序里。
以上两个程序的出自于“批处理之家”,地址在下面方便以后追踪以及查阅