我最近電腦不知道為什么磁盤空間會慢慢的變小,而且過一段時間之后,又會有兩三GB的空間被釋放出來,使用我想監控下,看看是那個文件夾下產生的文件來占用我的存儲空間,我想按層監視,最終找出原因。
從網上找個命令行顯示指定文件夾目錄的大小的批處理程序,但是發現并不太盡人意,總感覺不是很適合我的使用;
第一個程序,可以顯示某個文件夾下的文件大小,但是我想按層顯示,卻不能滿足我的要求,程序如下:
@echo offecho.set /p dirPath=please input folder path:set /a s=1024*1024*1024for /f "tokens=3 delims= " %%i in ('dir /s /a /-c "%dirPath%" ^|findstr 個文件') do (set z=%%i)echo.echo 文件夾:%dirPath%set d=bitif %z% gtr 1024 set /a "z>>=10"&set d=KBif %z% gtr 1024 set /a "z>>=10"&set d=MBif %z% gtr 1024 set /a "z>>=10"&set d=GBecho 的總大小是:%z% %d%&echo.if %z% LSS %s% echo 該文件夾內容小于1Gpause>nul |
第二個程序的,可以顯示當前文件夾下的層級目錄,但沒有循環每一次下文件夾的大小,程序如下:
@echo offsetlocal 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]))>統計結果.txtpause |
通過上面的兩個程序,我整合了一下,打算合成一個程序,應該就和我需要的程序差不多了,說干就干,下面看看我的程序:
@echo offsetlocal enabledelayedexpansionecho.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=bitif !zz! GEQ 1024 set /a "z1=!zz!>>10"&set d=KBif !z1! GEQ 1024 set /a "z2=!z1!>>10"&set d=KBif !z2! GEQ 1024 set /a "z3=!z2!>>10"&set d=KBecho 文件夾:%%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 |
代碼四:實現執行后統計文件夾內包含所有文件及所有子文件夾下的文件,以及子文件夾下的子文件夾下的文件,以及子文件夾下的子文件夾下的子文件夾下的文件