Windowsでduコマンドっぽいスクリプトを作った
widowsにはdu(directory usage?)がない。リソースキットをインストールすればdiruse.exeとか入るみたいだけどこの程度の作業にいちいちインストールとかめんどくさい。
TreeSizeFreeは便利だが結果をデータに落とせない。
仕方がないからvbscriptで作ってみた。
du.vbs
Dim argumentCount argumentCount = WScript.Arguments.Count If argumentCount = 0 Then usage WScript.Quit 0 End If Dim filespec filespec = WScript.Arguments.Item(argumentCount - 1) Dim maxDepth maxDepth = 100 If WScript.Arguments.Named.Exists("max-depth") Then maxDepth = CLng(WScript.Arguments.Named.Item("max-depth")) End If Dim ignoreHidden If WScript.Arguments.Named.Exists("ignore-hidden") Then ignoreHidden = True Else ignoreHidden = False End If Dim fileSystem Set fileSystem = CreateObject("Scripting.FileSystemObject") Dim f Set f = fileSystem.GetFolder(filespec) ShowFolderSize f,0 Function ShowFolderSize(folder,depth) Dim subFolders Dim subFolder If depth < maxDepth Then Set subFolders = folder.SubFolders For Each subFolder in subFolders walk subFolder,depth + 1 Next End If WScript.Echo FormatNumber(folder.Size) & vbTab & folder.Path End Function Function walk(folder,depth) If ignoreHidden Then If folder.attributes and 2 Then Exit Function End If If InStr(folder.Name,".") > 0 Then Exit Function End If End If ShowFolderSize folder,depth End Function Function usage() WScript.Echo "usage: cscript du.vbs [/max-depth:n] [/ignore-hidden] dir" End Function
/max-depth:1 とすると指定ディレクトリ直下まで表示。
/ignore-hidden をつけるとWindowsの隠しディレクトリと"ドットディレクトリ"を無視する。
cscriptで起動するのでロゴが出てうざい、とか言う場合はcscriptのオプションで消すとかする。