2014年5月30日金曜日

Diruseモドキ

Option Explicit

Dim objApl
Dim objFolder
Dim objFolderItems
Dim numFolderSize
Dim numFileCount
Dim numFolderCount

numFolderSize=0
numFileCount=0
numFolderCount=0

'①シェルアプリケーションオブジェクトを作成します
Set objApl = WScript.CreateObject("Shell.Application")

'②探りを入れたいフォルダのオブジェクトを作成します
'Set objFolder = objApl.NameSpace("i:\r")
Set objFolder = objApl.NameSpace("\\127.0.0.1\r")

'③フォルダオブジェクトから、入っているファイルや
' フォルダの情報を取得します
Set objFolderItems = objFolder.Items()

'フォルダの検索処理の呼び出し
Call prcFolderSize (objFolderItems)

'結果の表示。総容量、総ファイル数、総フォルダ数を表示
WScript.Echo "フォルダC:\happyの容量は、約" & numFolderSize & "バイトです"
WScript.Echo "フォルダC:\happyのファイル数は、約" & numFileCount & "個です"
WScript.Echo "フォルダC:\happyのフォルダ数は、約" & numFolderCount & "個です"

Set objFolderItems = Nothing
Set objFolder = Nothing
Set objApl = Nothing

'==============================================================
'= フォルダ内に含まれるファイルやフォルダを検索する
'==============================================================
Sub prcFolderSize(tmpFolderItems)

Dim objFolderItemsB
Dim objItem
Dim i

'④何個入っていたかは、Countで参照
For i=0 To tmpFolderItems.Count-1

'⑤ファイルやフォルダの情報を1コ取り出します
Set objItem = tmpFolderItems.Item(i)

'⑥取り出した物がファイルかフォルダかを判定
If objItem.IsFolder Then
'⑦フォルダであれば、フォルダアイテムオブジェクトを
' 作り、それを引数としてprcFolderSizeを再帰呼び出します
Set objFolderItemsB = objItem.GetFolder
Call prcFolderSize (objFolderItemsB.Items())
numFolderCount = numFolderCount + 1
Else
'⑧ファイルの場合は、サイズとファイル数を集計します
numFolderSize = numFolderSize + objItem.Size
numFileCount = numFileCount + 1
End If

Next

Set objItem = Nothing
Set objFolderItemsB = Nothing

End Sub