例えば、Ruby で、再帰的にフォルダのサイズを求めてみると、

require 'win32ole'
fso = WIN32OLE.new( 'Scripting.FileSystemObject' )

# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠しフォルダ・ファイルを除く。
# /**/* で再帰的に、以下の全てのフォルダ・ファイルを走査する
dir_path = "C:/Users/Owner/Documents/**/*"

target_dirs = Dir.glob( dir_path )
.select { |full_path| File.directory?( full_path ) } # フォルダのみ
.each do |folder|
folder_obj = fso.GetFolder( folder )

puts File.expand_path( folder_obj.path ) # \ を、/ に変換する
puts "#{ folder_obj.name } : #{ folder_obj.size }"
end

出力
C:/Users/Owner/Documents/a
a : 14231
C:/Users/Owner/Documents/a/b
b : 4666

# next で、次の繰り返しに進む事もできるが、
# select みたいなフィルターで絞り込む方が、可読性が高い
Dir.glob( dir_path ).each do |full_path|
next unless File.directory?( full_path ) # フォルダだけを処理する

puts full_path
end