我最近电脑不知道为何磁盘空间会慢慢的变小,并且过一段时间以后,又会有两三GB的空间被释放出来,使用我想监控下,看看是那个文件夹下产生的文件来占用个人存储空间,我想按层监视,最终找出缘由。html
从网上找个命令行显示指定文件夹目录的大小的批处理程序,可是发现并不太尽人意,总感受不是很适合个人使用;spa
第一个程序,能够显示某个文件夹下的文件大小,可是我想按层显示,却不能知足个人要求,程序以下:.net
@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
经过上面的两个程序,我整合了一下,打算合成一个程序,应该就和我须要的程序差很少了,说干就干,下面看看个人程序:code
@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
程序也很少解释,你们一看就明白,只是把别人的东西组合在一块儿,调用方法:htm
一:双击执行,根据提示输入您须要建设的文件夹路径。blog
二:开始--运行--cmd,而后找到存放bat文件的地方,直接输入bat文件名就能够执行。token
三:也能够直接输出到文件,例如:C:\>f3.bat>111.txt回车以后就只能看到光标一闪一闪的,这时你直接输入文件夹路径就能够了。get
说明:若是采用输出到文件的形式,最后把代码最后的pause行(暂停代码)删除,这样当程序执行完后会自动退出,不会一直停留在程序里。input
以上两个程序的出自于“批处理之家”,地址在下面方便之后追踪以及查阅