批處理統(tǒng)計文件夾內(nèi)的所有文件的數(shù)量和總大小的bat
我最近電腦不知道為什么磁盤空間會慢慢的變小,而且過一段時間之后,又會有兩三GB的空間被釋放出來,使用我想監(jiān)控下,看看是那個文件夾下產(chǎn)生的文件來占用我的存儲空間,我想按層監(jiān)視,最終找出原因。
從網(wǎng)上找個命令行顯示指定文件夾目錄的大小的批處理程序,但是發(fā)現(xiàn)并不太盡人意,總感覺不是很適合我的使用;
第一個程序,可以顯示某個文件夾下的文件大小,但是我想按層顯示,卻不能滿足我的要求,程序如下:
@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 該文件夾內(nèi)容小于1G pause>nul
第二個程序的,可以顯示當前文件夾下的層級目錄,但沒有循環(huán)每一次下文件夾的大小,程序如下:
@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] ))>統(tǒng)計結(jié)果.txt pause
通過上面的兩個程序,我整合了一下,打算合成一個程序,應(yīng)該就和我需要的程序差不多了,說干就干,下面看看我的程序:
@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
代碼四:實現(xiàn)執(zhí)行后統(tǒng)計文件夾內(nèi)包含所有文件及所有子文件夾下的文件,以及子文件夾下的子文件夾下的文件,以及子文件夾下的子文件夾下的子文件夾下的文件
@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 )) >統(tǒng)計結(jié)果.txt pause
MB不支持小數(shù)位,文件過小會顯示為零,可以刪除
set/a n/=1048576
并刪除MB改為字節(jié)。
或者使用KB,修改為
set/a n/=1024 echo.%%~fi : !a! : !n!KB
代碼5:用純批處理在數(shù)字計算上受限制,這個問題用批處理結(jié)合awk倒是簡單:
需拖拽執(zhí)行
# & 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 下載地址:http://chabaoo.cn/softs/515570.html
程序也不多解釋,大家一看就明白,只是把別人的東西組合在一起,調(diào)用方法:
一:雙擊執(zhí)行,根據(jù)提示輸入您需要建設(shè)的文件夾路徑。
二:開始--運行--cmd,然后找到存放bat文件的地方,直接輸入bat文件名就可以執(zhí)行。
三:也可以直接輸出到文件,例如:C:\>f3.bat>111.txt回車之后就只能看到光標一閃一閃的,這時你直接輸入文件夾路徑就可以了。
說明:如果采用輸出到文件的形式,最后把代碼最后的pause行(暫停代碼)刪除,這樣當程序執(zhí)行完后會自動退出,不會一直停留在程序里。
以上兩個程序的出自于“批處理之家”,地址在下面方便以后追蹤以及查閱
相關(guān)文章
批處理批量拷貝當前目錄及多級子目錄內(nèi)的txt文件到指定目錄下
想做個批處理批量拷貝當前目錄及多級子目錄(3級)內(nèi)的文件到指定目錄下,并且只拷貝>100k的txt,有同名文件直接覆蓋,求大佬支持2023-08-08Windows BAT獲取開始菜單路徑和桌面路徑的實現(xiàn)
本文將總結(jié)如何在bat批處理中獲取 開始菜單、 桌面、 任務(wù)欄的絕對路徑,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07