PowerShellフォルダ内のファイルサイズの合計を取得

コンピュータ

ストレージ内で容量を沢山使っているフォルダを探そうと思いスクリプトを考えてみました。

スポンサーリンク

フォルダを指定して取得

(Get-ChildItem "C:\" -File | measure -Sum -Property Length).Sum

サブフォルダを再帰的に取得

Get-ChildItem "H:\" -Directory -Recurse | % { [PsCustomObject]@{"FullPath"=$_.FullName;"Size"=(Get-ChildItem $_.FullName -File | measure -Sum -Property Length).Sum} } | Format-Table

結果

FullPath      Size
--------      ----
H:\asp
H:\backup     3635
H:\Books      123029040
H:\csharp     154873
H:\download
H:\git

あとは、Sizeで並べ替えて大きなフォルダを探せばよいはず。

文字でグラフのようなものを付加

$l =Get-ChildItem "H:\" -Directory | % { [PsCustomObject]@{"FullPath"=$_.FullName;"Size"=(Get-ChildItem $_.FullName -File | measure -Sum -Property Length).Sum} }
$m = $l | measure -Max -Min -Property Size
$l | % { [PSCustomObject]@{"FullPath"=$_.FullPath; "Size"=$_.Size; "Graph" = ("*" * [int]($_.Size / ($m.Maximum) * 10))} } | Sort-Object -Property Size -Descending

結果

code>FullPath           Size Graph
--------           ---- -----
H:\tools      207424585 **********
H:\Books      123029040 ******
H:\py          84993879 ****
H:\Pictures    12725418 *
H:\text         6694371
H:\sh           4556475
H:\ps1          2462571
H:\json          419119
H:\php           340062
H:\csharp        154873
H:\memo           31349
H:\html           19956
H:\md             13806
H:\key            13170
H:\sqlite          4827
H:\backup          3635
H:\javascript      2100
H:\workspace         12
H:\download
H:\asp
H:\git
H:\kotlin
H:\src

数値だけだと認識しずらいかと思いましたが、Sizeで並べ替えるだけで、グラフはいらない感じです。

コメント