GetDirectorySize - Evaluate disk space used by files and subdirectories

' Retrieve the number of bytes by all the files in a directory' (it doesn't account for slack space, that is unused space in disk sectors)'' If INCLUDESUBDIRS is true, it recursively parses all subdirectories.'' supports only up to 2G directories.
Function GetDirectorySize(ByVal Path As String, Optional includeSubdirs As _
Boolean) As Long
Dim fileInfo() As Variant
Dim i As Integer
' Ensure that the path ends with a backslash
If Right(Path, 1) <> "\" Then Path = Path & "\"
' Get the list of files
fileInfo() = GetFilesInfo(Path & "*.*")
' sum size of files
For i = 1 To UBound(fileInfo, 2)
GetDirectorySize = GetDirectorySize + fileInfo(1, i)
Next
If includeSubdirs Then
' Get the list of subdirectories.
fileInfo() = GetFilesInfo(Path & "*.*", True)
' Recursive call this routine for all subdirectories
For i = 1 To UBound(fileInfo, 2)
GetDirectorySize = GetDirectorySize + GetDirectorySize(Path & _
fileInfo(0, i), True)
Next
End If
End Function