快速批量獲取當(dāng)前文件夾及子文件夾的大小

前言

計(jì)算機(jī)的內(nèi)存是有限的,面對(duì)海量的數(shù)據(jù)和垃圾文件,我們的電腦越來越慢,這時(shí)我們想清理一下我們的硬盤,通常的方法是:看一下哪個(gè)分區(qū)或目錄占用的空間比較大,然后再看一下目錄下的文件是否可以刪除.


但是當(dāng)我們打開資源管理器看到的卻是這個(gè)樣子的.

發(fā)現(xiàn):只有文件顯示大小,文件夾是不顯示的.如果需要知道某個(gè)文件夾的大小,需要點(diǎn)擊右鍵,屬性,如下圖所示.

?獲取文件夾大小

雖然我們不知道微軟為何不顯示文件夾的大小,但是我們一定要知道如何去獲取文件夾大小的方法.


在當(dāng)前文件夾內(nèi)創(chuàng)建一個(gè)EXCEL文件,我們可以起名為”文件夾大小.xlsm”,打開文件時(shí),啟用宏,按ALT+F11打開VBA編輯器,插入模塊,并寫入如下代碼:


'設(shè)置公共變量

Public i

Public n


Sub foldersize() '主程序

'驗(yàn)證當(dāng)前工作表名稱,防止寫錯(cuò)

If ActiveSheet.Name = "foldersize" Then

'清除所有單元格

Cells.Clear

'清除分級(jí)顯示

Cells.ClearOutline

Else

Exit Sub

End If

'初始化公共變量

i = 2

n = 1

Dim fso, fld

'定義對(duì)象

Set fso =CreateObject("scripting.filesystemobject")

Set fld = fso.getfolder(ThisWorkbook.Path)

'設(shè)置表頭

Cells(1, 1) = "文件夾名稱"

Cells(1, 2) = "文件夾大小(MB)"


subfd fld

End Sub




Sub subfd(fds) '子程序

For Each fd In fds.subfolders

If n <= 7 Then

Rows(i).OutlineLevel = n

Else

Rows(i).OutlineLevel = 7

End If

'寫入文件夾名稱

Cells(i, 1) = fd.Name

'縮進(jìn)

Cells(i, 1).InsertIndent (n)

'設(shè)置超級(jí)鏈接

ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 1),Address:=fd.Path

'?寫入文件夾大小

Cells(i, 2) = WorksheetFunction.Text(Round(fd.size / 1024 /1024, 2), "0.00")

i = i + 1

'如果有子文件夾,則進(jìn)行迭代

If fd.subfolders.Count <> 0 Then

'增加縮進(jìn)量

n = n + 1

'迭代

subfd fd

Else:

n = n + 1

End If

n = n - 1

Next

'設(shè)置分組顯示,匯總在上面

ActiveSheet.Outline.SummaryRow = xlAbove

End Sub


運(yùn)行foldersize主程序,結(jié)果如下圖所示:

列出了當(dāng)前目錄的每一個(gè)文件夾名稱及大小,并且運(yùn)用了分級(jí)顯示,目錄子目錄清清楚楚,還設(shè)置了超級(jí)鏈接,只有點(diǎn)擊就可以進(jìn)入你想要的目錄。

?總結(jié)

心動(dòng)不如行動(dòng),同學(xué)們也趕緊試試吧!記得把當(dāng)前工作表的名字改成foldersize,不然沒有結(jié)果哦!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容