Datamation Logo

System Administration: Get Folder Size Script

September 23, 2003
Datamation content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More .

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.

  SEE ALL
APPLICATIONS ARTICLES
 

Subscribe to Data Insider

Learn the latest news and best practices about data science, big data analytics, artificial intelligence, data security, and more.

Datamation Logo

Datamation is the leading industry resource for B2B data professionals and technology buyers. Datamation's focus is on providing insight into the latest trends and innovation in AI, data security, big data, and more, along with in-depth product recommendations and comparisons. More than 1.7M users gain insight and guidance from Datamation every year.

Advertisers

Advertise with TechnologyAdvice on Datamation and our other data and technology-focused platforms.

Advertise with Us

Our Brands


Privacy Policy Terms & Conditions About Contact Advertise California - Do Not Sell My Information

Property of TechnologyAdvice.
© 2025 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.