' ************************************************
' 管理者権限で実行用
' ************************************************
Set Shell = CreateObject( "Shell.Application" )
' ************************************************
' 管理者権限で再実行
' ************************************************
if Wscript.Arguments.Count = 0 then
Shell.ShellExecute "cmd.exe", "/c cscript.exe " & Dd(WScript.ScriptFullName) & " next" & " & pause", "", "runas", 1
Wscript.Quit
end if
' ************************************************
' 除外フォルダ名を スペースで区切って並べる
' (簡易的な除外)
' ************************************************
Dim Exclude
Exclude = ".gem"
Exclude = Lcase(Exclude)
' ************************************************
' 処理用
' ************************************************
Set WshShell = CreateObject( "WScript.Shell" )
Set Fso = CreateObject( "Scripting.FileSystemObject" )
Dim target
' ************************************************
' 対象フォルダを選択
' ************************************************
target = SelectDir( "対象フォルダを選択して下さい" )
if target = "" then
Wscript.Quit
end if
Wscript.Echo target
Wscript.Echo
' ************************************************
' フォルダオブジェクト取得
' ************************************************
Set objFolder = Fso.GetFolder(target)
' ************************************************
' サブフォルダコレクション取得
' ************************************************
Set colSubFolder = objFolder.SubFolders
' ************************************************
' 一覧
' ************************************************
Dim TargetSize : TargetSize = 0
For Each obj in colSubFolder
Do While true
if InStr(Exclude,Lcase(obj.Name)) > 0 then
Exit Do
end if
on error resume next
Wscript.Echo Lpad(FormatNumber((Fix(obj.Size / 1024) / 1024),3)," ", 15) & " M : " & obj.Name
if Err.Number <> 0 then
Wscript.Echo " ( " & obj.Name & " : 処理できません )"
else
TargetSize = TargetSize + obj.Size
end if
on error goto 0
Exit Do
Loop
Next
Wscript.Echo
Dim AllSize
Dim er : er = 0
on error resume next
AllSize = objFolder.Size
if Err.Number <> 0 then
er = 1
AllSize = TargetSize
end if
on error goto 0
Wscript.Echo Lpad(FormatNumber((Fix(TargetSize / 1024) / 1024),3)," ", 15) & " M : " & "表示合計"
if er = 1 then
Wscript.Echo " ( " & target & " のサイズは取得できませんでした )"
else
Wscript.Echo Lpad(FormatNumber((Fix(AllSize / 1024) / 1024),3)," ", 15) & " M : " & target & " のサイズ"
end if
Dim fsize : fsize = 0
For Each file in objFolder.files
fsize = fsize + file.size
Next
Wscript.Echo Lpad(FormatNumber((Fix((fsize) / 1024) / 1024),3)," ", 15) & " M : " & target & " 下のファイル"
Wscript.Echo
' ************************************************
' ディレクトリ選択
' ************************************************
Function SelectDir( strTitle )
Dim obj
Set obj = Shell.BrowseForFolder( 0, strTitle, &H4B, 0 )
if obj is nothing then
SelectDir = ""
Exit Function
end if
if not obj.Self.IsFileSystem then
ErrorMessage = "ファイルシステムではありません"
SelectDir = ""
Exit Function
end if
SelectDir = obj.Self.Path
End Function
' ************************************************
' ダブルクォートで囲む
' ************************************************
Function Dd( strValue )
Dd = """" & strValue & """"
End function
' ************************************************
' 指定数、指定文字列左側を埋める
' ************************************************
Function Lpad( strValue, str, nLen )
Lpad = Right( String(nLen,str) & strValue, nLen )
End Function