Author: Hans van der Zaag
Platform: Windows NT, Windows 2000, Windows XP
Type: VBScript
DESCRIPTION: This script calculates the size of all subfolders within a specified folder and sorts the data automatically into an Excel workbook. Getfoldersize.vbs is particularly useful when you want to find out which folder takes the highest amount of disk space.
Scroll down to view the script.
Download as text file.
System Administration: Get Folder Size Script
'--------------------------------------------------------------------------------------- ' ' Name: getfoldersize.vbs ' Version: 1.0 ' Date: 7-5-2002 ' Author: Hans van der Zaag ' Description: getfoldersize.vbs calculates the size of all subfolders within ' a folder and sorts this data in an excel workbook ' '--------------------------------------------------------------------------------------- rootfolder = Inputbox("Enter directory/foldername: " & _ chr(10) & chr(10) & "(i.e. C:Program Files or " & _ "ServernameC$Program Files)" & chr(10) & chr(10), _ "Getfoldersize", "C:Program Files") outputfile = "c:foldersize_" & Day(now) & Month(now) & Year(now) & ".xls" Set fso = CreateObject("scripting.filesystemobject") if fso.fileexists(outputfile) then fso.deletefile(outputfile) 'Create Excel workbook set objXL = CreateObject( "Excel.Application" ) objXL.Visible = False objXL.WorkBooks.Add 'Counter 1 for writing in cell A1 within the excel workbook icount = 1 'Run checkfolder CheckFolder (FSO.getfolder(rootfolder)) Sub CheckFolder(objCurrentFolder) For Each objFolder In objCurrentFolder.SubFolders FolderSize = objFolder.Size Tmp = (FormatNumber(FolderSize, 0, , , 0)/1024)/1024 ObjXL.ActiveSheet.Cells(icount,1).Value = objFolder.Path ObjXL.ActiveSheet.Cells(icount,2).Value = Tmp 'Wscript.Echo Tmp & " " & objFolder.Path 'raise counter with 1 for a new row in excel icount = icount + 1 Next 'Recurse through all of the folders For Each objNewFolder In objCurrentFolder.subFolders CheckFolder objNewFolder Next End Sub 'sort data in excel objXL.ActiveCell.CurrentRegion.Select objXL.Selection.Sort objXL.Worksheets(1).Range("B1"), _ 2, _ , _ , _ , _ , _ , _ 0, _ 1, _ False, _ 1 'Lay out for Excel workbook objXL.Range("A1").Select objXL.Selection.EntireRow.Insert objXL.Selection.EntireRow.Insert objXL.Selection.EntireRow.Insert objXL.Selection.EntireRow.Insert objXL.Selection.EntireRow.Insert objXL.Columns(1).ColumnWidth = 60 objXL.Columns(2).ColumnWidth = 15 objXL.Columns(2).NumberFormat = "#,##0.0" objXL.Range("B1:B1").NumberFormat = "d-m-yyyy" objXL.Range("A1:B5").Select objXL.Selection.Font.Bold = True objXL.Range("A1:B3").Select objXL.Selection.Font.ColorIndex = 5 objXL.Range("A1:A1").Select objXL.Selection.Font.Italic = True objXL.Selection.Font.Size = 16 ObjXL.ActiveSheet.Cells(1,1).Value = "Survey FolderSize " ObjXL.ActiveSheet.Cells(1,2).Value = Day(now) & "-" & Month(now) & "-"& Year(now) ObjXL.ActiveSheet.Cells(3,1).Value = UCase(rootfolder) ObjXL.ActiveSheet.Cells(5,1).Value = "Folder" ObjXL.ActiveSheet.Cells(5,2).Value = "Total (MB)" 'Finally close the workbook ObjXL.ActiveWorkbook.SaveAs(outputfile) ObjXL.Application.Quit Set ObjXL = Nothing 'Message when finished Set WshShell = CreateObject("WScript.Shell") Finished = Msgbox ("Script executed successfully, results can be found in " & Chr(10) _ & outputfile & "." & Chr(10) & Chr(10) _ & "Do you want to view the results now?", 65, "Script executed successfully!") if Finished = 1 then WshShell.Run "excel " & outputfile
Disclaimer: We hope that the information in these pages is valuable to you. Your use of the information contained in these pages, however, is at your sole risk. All information on these pages is provided “as -is”, without any warranty, whether express or implied, of its accuracy, completeness, fitness for a particular purpose, title or non-infringement, and none of the third-party products or information mentioned in the work are authored, recommended, supported or guaranteed by me. I shall not be liable for any damages you may sustain by using this information, whether direct, indirect, special, incidental or consequential, even if it has been advised of the possibility of such damages.