How can I check folder sizes inside my drive in Microsoft?

How can I check folder sizes inside my drive?
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Aside from clicking the properties of each folder to view the size, you'd need a 3rd party application.  There's a lot to choose from and most will give you graphical views of where the space is being taken up.

Here's one I've used and liked.
hi ..
open windows explorer .
right clik the folder u want to check .
choose proparites .
read the folder size.
I wrote this using AutoIT (, when run it outputs the sizes of subfolders (or files) of a specified folder, to a CSV file.
#include <GUIConstantsEx.au3>
#include <onEventFunc.au3>
#include <WindowsConstants.au3>
TraySetToolTip("SizeFinder - Idle")

Dim $hndsrc,$hnddst,$count,$tsize,$line,$size,$timecrt,$created,$timemod,$modified,$timeacc,$accessed
Dim $source=@TempDir & "\FileList.tmp"
Dim $type="",$yn=0,$count=0,$tsize=0,$gui=1

If MsgBox(1,"SizeFinder","Welcome to SizeFinder. This tool is used to get a list of file or folder sizes.")=2 Then Exit

$parentfld=FileSelectFolder("Choose the folder you want to scan INSIDE of:","",2,"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}")
If @error=1 Then Exit
$parentfld="""" & $parentfld & """"

GUICtrlCreateLabel("Would you like to list the size of files only or folders only?",30,15)
GUICtrlCreateLabel("(both options will include subfolders)",75,40)
$installfiles=GUICtrlCreateButton("Files Only",20,75,80)
$installdirs=GUICtrlCreateButton("Folders Only",125,75,80)
While $gui=1
  Sleep(1000)  ; Idle around

ProgressOn("SizeFinder","Getting " & $type & " sizes... 0% finished","",200,200,16)
$dest=FileSaveDialog("Name the CSV output file:","::{20D04FE0-3AEA-1069-A2D8-08002B30309D}","CSV File - Tab delimited (*.csv)",16,"SizeList-" & $type & "s-" & @YEAR & @MON & @MDAY & "-" & @HOUR & @MIN & ".csv",$prghnd)
If @error=1 Then

TraySetToolTip("SizeFinder - Getting " & $type & " sizes...")

ProgressSet(0,"Reading..." & @LF & "0 of " & $linecnt[0],"Getting " & $type & " sizes... 0.00% finished")

Switch $type
	Case "file"
		FileWriteLine($hnddst,"Name,Size,Size (bytes),Created,Modified,Accessed")
	Case "folder"
		FileWriteLine($hnddst,"Name,Size,Size (bytes)")

While 1
	If $line="STOP" Then ExitLoop
	;If StringInStr($line,"U:\IT\")=0 Then
		If $yn=7 Then
			If StringLen($newprnt)<>StringInStr($newprnt,"\",0,-1) Then $newprnt=$newprnt & "\"
			$line=$newprnt & $line
		TraySetToolTip("SizeFinder - Getting " & $type & " sizes... " & Round(($count/$linecnt[0])*100,0) & "%")
		ProgressSet(($count/$linecnt[0])*100,$line & @LF & $count & " of " & $linecnt[0],"Getting " & $type & " sizes... " & Round(($count/$linecnt[0])*100,2) & "% finished")
		If FileExists($line) Then
			Switch $type
				Case "file"
					Switch $size
						Case 0 To 1024
							$sized=Round($size,2) & " bytes"
						Case 1025 To 1048575
							$sized=Round(($size/1024),2) & " KB"
						Case Else
							$sized=Round(($size/1048576),2) & " MB"
					$created=$timecrt[0] & "-" & $timecrt[1] & "-" & $timecrt[2] & " " & $timecrt[3] & ":" & $timecrt[4] & ":" & $timecrt[5]
					$modified=$timemod[0] & "-" & $timemod[1] & "-" & $timemod[2] & " " & $timemod[3] & ":" & $timemod[4] & ":" & $timemod[5]
					$accessed=$timeacc[0] & "-" & $timeacc[1] & "-" & $timeacc[2] & " " & $timeacc[3] & ":" & $timeacc[4] & ":" & $timeacc[5]
					FileWriteLine($hnddst,StringReplace($line,","," ",0,2) & "," & $sized & "," & $size & "," & $created & "," & $modified & "," & $accessed)
				Case "folder"
					Switch $size
						Case 0 To 1024
							$sized=Round($size,2) & " bytes"
						Case 1025 To 1048575
							$sized=Round(($size/1024),2) & " KB"
						Case Else
							$sized=Round(($size/1048576),2) & " MB"
					FileWriteLine($hnddst,StringReplace($line,","," ",0,2) & "," & $sized & "," & $size)
	TraySetToolTip("SizeFinder - Getting " & $type & " sizes... " & Round(($count/$linecnt[0])*100,0) & "%")
	ProgressSet(($count/$linecnt[0])*100,$line & @LF & $count & " of " & $linecnt[0],"Getting " & $type & " sizes... " & Round(($count/$linecnt[0])*100,2) & "% finished")
TraySetToolTip("SizeFinder - Idle")

FileWriteLine($hnddst,@CRLF & "Total number of " & $type & "s: " & $count)
If $yn=6 Then
	FileWriteLine($hnddst,"Total combined size: (N/A when listing folders and their subfolders)")
	$tsize=Round(($tsize/1000),3) & " GB"
	FileWriteLine($hnddst,"Total combined size: " & $tsize)

If ($count+4)>65536 Then
	MsgBox(0+48+0+0+262144,"SizeFinder","Script has finished outputting " & $type & " sizes to " & $dest & "." & @LF & @LF & "Since there were more than 65,536 " & $type & "s found, the CSV file can only be opened in Excel 2007 or later. Sorry.")
	MsgBox(0+48+0+0+262144,"SizeFinder","Script has finished outputting " & $type & " sizes to " & $dest & ".")

Func _Scan($ford)
	TraySetToolTip("SizeFinder - Building list...")
	If $ford=1 Then $yn=MsgBox(4+32+256+0+0,"SizeFinder","Do you want to list all subfolders individually?")
	$wait=GUICreate("Building List...",550,412,-1,-1,BitOR($WS_BORDER,$WS_POPUP),$WS_EX_TOPMOST)
	GUICtrlCreateLabel("Please wait while SizeFinder builds the list of items...",155,155)
	GUICtrlCreateLabel("Items are added at an approximate rate of 68,500 per minute.",127,185)
	Switch $ford
		Case 0
			RunWait(@ComSpec & " /c DIR " & $parentfld & " /A:-D /B /O:N /S>""" & $source & """","",@SW_HIDE)
		Case 1
			If $yn=6 Then RunWait(@ComSpec & " /c DIR " & $parentfld & " /A:D /B /O:N /S>""" & $source & """","",@SW_HIDE)
			If $yn=7 Then RunWait(@ComSpec & " /c DIR " & $parentfld & " /A:D /B /O:N>""" & $source & """","",@SW_HIDE)

Func _Exit()

Open in new window

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Amazon Web Services

Are you thinking about creating an Amazon Web Services account for your business? Not sure where to start? In this course you’ll get an overview of the history of AWS and take a tour of their user interface.

Leon FesterSenior Solutions ArchitectCommented:
Follow these instructions to add the FolderSize column to see the size of the folder.

Alternatively download and install Treesize professional.
It's a really nice tool to do age analysis for multiple layer folders.
It also has a addin for adding a Treesize Column to explorer which works much the same as the FolderSize option mentioned above.

Treesize professional is perfect for drilling down into the age and type of files being stored per folder.
Also has excellent reporting and exporting capabilities.
Guillermo FeijóoSystems administratorCommented:

    I use diskdata, wich I think is a great solution.
Microsoft have a small commandline app I use often called DIRUSE.EXE

Yes it's ancient, but I still use it alot with scripting against our servers

It works even on home folders of other users (which are by default denied even to admins unless they take ownership)

Output from doing a "DIRUSE /?"
C:\AdminTools>DIRUSE.EXE /?

DIRUSE displays a list of disk usage for a directory tree(s). Version 1.20

DIRUSE [/S | /V] [/M | /K | /B] [/C] [/,] [/Q:# [/L] [/A] [/D] [/O]] [/*] DIRS

/S      Specifies whether subdirectories are included in the output.
/V      Output progress reports while scanning subdirectories.  Ignored if /S is
/M      Displays disk usage in megabytes.
/K      Displays disk usage in kilobytes.
/B      Displays disk usage in bytes (default).
/C      Use Compressed size instead of apparent size.
/,      Use thousand separator when displaying sizes.
/L      Output overflows to logfile .\DIRUSE.LOG.
/*      Uses the top-level directories residing in the specified DIRS
/Q:#    Mark directories that exceed the specified size (#) with a "!".
        (If /M or /K is not specified, then bytes is assumed.)
/A      Specifies that an alert is generated if specified sizes are exceeded.
        (The Alerter service must be running.)
/D      Displays only directories that exceed specified sizes.
/O      Specifies that subdirectories are not checked for specified size
DIRS    Specifies a list of the paths to check.

Note:   Parameters can be typed in any order. And the '-' symbol can be
        used in place of the '/' symbol.

        Also, if /Q is specified, then return code is ONE if any directories are
 found that
        exceed the specified sizes.  Otherwise the return code is ZERO.

Example: diruse /s /m /q:1.5 /l /* c:\users


Open in new window

As you can see, it has the "/L" option to output to a logfile, or of course you can use " > Logfile.txt" as usual to redirect output to file
I tend to DIRUSE.exe /M /* C:\TheFolderContainingTheFoldersIWantTheSizesOf
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft Legacy OS

From novice to tech pro — start learning today.