批处理统计文件夹内的所有文件的数量和总大小的bat
我最近电脑不知道为什么磁盘空间会慢慢的变小,而且过一段时间之后,又会有两三GB的空间被释放出来,使用我想监控下,看看是那个文件夹下产生的文件来占用我的存储空间,我想按层监视,最终找出原因。
从网上找个命令行显示指定文件夹目录的大小的批处理程序,但是发现并不太尽人意,总感觉不是很适合我的使用;
第一个程序,可以显示某个文件夹下的文件大小,但是我想按层显示,却不能满足我的要求,程序如下:
@echo off echo. set /p dirPath=please input folder path: set /a s=1024*1024*1024 for /f "tokens=3 delims= " %%i in ('dir /s /a /-c "%dirPath%" ^|findstr 个文件') do (set z=%%i) echo. echo 文件夹:%dirPath% set d=bit if %z% gtr 1024 set /a "z>>=10"&set d=KB if %z% gtr 1024 set /a "z>>=10"&set d=MB if %z% gtr 1024 set /a "z>>=10"&set d=GB echo 的总大小是:%z% %d%&echo. if %z% LSS %s% echo 该文件夹内容小于1G pause>nul
第二个程序的,可以显示当前文件夹下的层级目录,但没有循环每一次下文件夹的大小,程序如下:
@echo off setlocal enabledelayedexpansion (for /d %%a in (C:\KuGou\*) do ( set/a n=z=0 pushd "%%a" for %%b in (*.*.) do ( set/a n+=1,z+=%%~zb ) set/a "z>>=20" popd echo;%%a [!n!个!z!M] ))>统计结果.txt pause
通过上面的两个程序,我整合了一下,打算合成一个程序,应该就和我需要的程序差不多了,说干就干,下面看看我的程序:
@echo off setlocal enabledelayedexpansion echo. set /p dirPath=please input folder path: echo %dirPath% echo. for /d %%a in (%dirPath%\*) do ( set/a zz=0 for /f "tokens=3 delims= " %%t in ('dir /s /a /-c "%%a" ^|findstr 个文件') do ( set zz=%%t ) set d=bit if !zz! GEQ 1024 set /a "z1=!zz!>>10"&set d=KB if !z1! GEQ 1024 set /a "z2=!z1!>>10"&set d=KB if !z2! GEQ 1024 set /a "z3=!z2!>>10"&set d=KB echo 文件夹:%%a ,大小是:!z3!GB = !z2!MB = !z1!!d! ) for /f "tokens=1-4 delims= " %%i in ('dir /a /-c %dirPath% ^|findstr 个文件') do ( set/a ss=%%k set/a ss>>=10,d=bit if !ss! GEQ 1024 set /a "s1=!ss!>>10"&set d=KB if !s1! GEQ 1024 set /a "s2=!s1!>>10"&set d=KB if !s2! GEQ 1024 set /a "s3=!s2!>>10"&set d=KB echo 在"%dirPath%"根目录下有 %%i %%j ,总共大小为:!s3!GB = !s2!MB = !s1!!d! ) pause
代码四:实现执行后统计文件夹内包含所有文件及所有子文件夹下的文件,以及子文件夹下的子文件夹下的文件,以及子文件夹下的子文件夹下的子文件夹下的文件
@echo off setlocal enabledelayedexpansion (for /f “delims=” %%i in ('dir /s/b/l/ad') do ( cd "%%~fsi" set/a a=0,n=0 for /f "delims=" %%a in ('dir /b/l/aa') do ( set/a a+=1,n+=%%~za 2>nul ) set/a n/=1048576 echo.%%~fi : !a! : !n!MB )) >统计结果.txt pause
MB不支持小数位,文件过小会显示为零,可以删除
set/a n/=1048576
并删除MB改为字节。
或者使用KB,修改为
set/a n/=1024 echo.%%~fi : !a! : !n!KB
代码5:用纯批处理在数字计算上受限制,这个问题用批处理结合awk倒是简单:
需拖拽执行
# & cls & (for /f "delims=" %%a in ('dir/a-d/b/s %1') do @echo %%~za) | gawk -v path=%~n1 -f %0 >con & pause & exit {sum+=$0} END{ printf "%s文件夹总大小为: \n%.2f byte\n%.2f MB\n%.2f GB\n",path,sum,sum/1024/1024,sum/1024/1024/1024 }
gawk 4.1.0 下载地址://www.jb51.net/softs/515570.html
程序也不多解释,大家一看就明白,只是把别人的东西组合在一起,调用方法:
一:双击执行,根据提示输入您需要建设的文件夹路径。
二:开始--运行--cmd,然后找到存放bat文件的地方,直接输入bat文件名就可以执行。
三:也可以直接输出到文件,例如:C:\>f3.bat>111.txt回车之后就只能看到光标一闪一闪的,这时你直接输入文件夹路径就可以了。
说明:如果采用输出到文件的形式,最后把代码最后的pause行(暂停代码)删除,这样当程序执行完后会自动退出,不会一直停留在程序里。
以上两个程序的出自于“批处理之家”,地址在下面方便以后追踪以及查阅
上一篇:dos 环境变量延迟扩展enabledelayedexpansion详解
栏 目:DOS/BAT
下一篇:certutil - decode/encode BASE64/HEX strings.Print symbols by
本文标题:批处理统计文件夹内的所有文件的数量和总大小的bat
本文地址:https://www.xiuzhanwang.com/a1/DOS_BAT/10054.html
您可能感兴趣的文章
- 01-10使用批处理实现软件的自动安装以安装搜狗拼音为例
- 01-10通过批处理修改DNS的代码(推荐)
- 01-10windows使用批处理发布web到tomcat并启动tomcat脚本分享
- 01-10再谈DOS批处理下格式化日期字符串的三种方法(详解)
- 01-10用批处理一键安装两种扩展名的Windows系统补丁
- 01-10ip地址切换批处理脚本分享
- 01-10批处理杨辉三角效果实现代码
- 01-10将批处理文件注册成服务在系统启动的时候自动调用
- 01-10批处理输出n阶幻方脚本
- 01-10dos批处理文件中的变量小结
阅读排行
本栏相关
- 01-10DOS下查看硬盘分区该使用什么命令
- 01-10使用批处理实现软件的自动安装以安
- 01-10后台运行bat定时器程序示例分享
- 01-10通过批处理修改DNS的代码(推荐)
- 01-10dota2服务器ping测试脚本分享
- 01-10再谈DOS批处理下格式化日期字符串的
- 01-10windows使用批处理发布web到tomcat并启动
- 01-10win7怎么设定关闭显示器时间
- 01-10屏蔽up键禁止游戏运行脚本分享
- 01-10win7创建wifi热点脚本分享
随机阅读
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 01-10SublimeText编译C开发环境设置
- 01-10delphi制作wav文件的方法
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 01-11ajax实现页面的局部加载
- 01-10C#中split用法实例总结
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 04-02jquery与jsp,用jquery