Thursday, March 28, 2024

System Administration: Get Folder Size Script

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.

Subscribe to Data Insider

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

Similar articles

Get the Free Newsletter!

Subscribe to Data Insider for top news, trends & analysis

Latest Articles