ディレクトリ(フォルダ)単位でファイル容量の合計を出力する †PowerShellを用い、ディレクトリ単位でファイル容量を出力する方法を以下に記します。 参考サイト記事 †関連記事 †ディレクトリ内のファイル合計サイズを出力する †以下のスクリプトは、現在いるカレントディレクトリ内にあるフォルダを対象とし、そのフォルダ内にあるファイル容量の合計値を取得します。 $o = @() Get-ChildItem . | Where-Object PSisContainer | %{ $PATH=$_; Get-ChildItem -Force -Recurse $_ | Measure-Object -Sum Length } | %{ $o += ([PSCustomObject]@{ PATH=$PATH.FullName; SUM=$_.Sum })} $o 上記のスクリプトを起動すると以下のように出力されます。 PS C:\> cd C:\Windows\Microsoft.NET PS C:\Windows\Microsoft.NET> $o = @() PS C:\Windows\Microsoft.NET> Get-ChildItem . | Where-Object PSisContainer | %{ $PATH=$_; Get-ChildItem -Force -Recurse $_ | Measure-Object -Sum Length } | %{ $o += ([PSCustomObject]@{ PATH=$PATH.FullName; SUM=$_.Sum })} PS C:\Windows\Microsoft.NET> $o PATH SUM ---- --- C:\Windows\Microsoft.NET\assembly 168640526 C:\Windows\Microsoft.NET\Framework 263581306 C:\Windows\Microsoft.NET\Framework64 551896484 ディレクトリ構造を確認します。 Functionで実現・Get-DirTotalFileSize() †if else を使うとパイプラインがうまく動作しなかったので、以下のように関数にしました。 以下のように関数として作成しました。 Function Get-DirTotalFileSize() { if ($args.Length -ne 1) { $Host.UI.WriteErrorLine("Usage: Get-DirectorySize <path>") return } $pathto = $args[0] if (!(Test-Path -PathType Container $pathto)) { $Host.UI.WriteErrorLine("Cannot access $pathto : No such directory") return } $o = @() $dirs = Get-ChildItem $pathto | Where-Object PSisContainer $dirs | % { $PATH=$_; if ((Get-ChildItem $_.FullName).Length -ne 0) { $measure = Get-ChildItem -Force -Recurse $_.FullName | Measure-Object -Sum Length $o += [PSCustomObject]@{ PATH=$PATH.FullName; SUM=$measure.Sum } } else { $o += [PSCustomObject]@{ PATH=$PATH.FullName; SUM=0 } } } $o } 実行してみる †上記のスクリプトをダウンロードするか、テキストエディタに貼り付け保存してください。
CSVにしてみる †上記の関数により、ファイルサイズ一覧が取得できたので、CSVにしてみます。 PS C:\> $d = Get-DirTotalFileSize C:\Windows\Microsoft.NET PS C:\> $d | Export-Csv -NoTypeInformation -Encoding Default list.csv PS C:\> notepad.exe .\list.csv csv出力されているのが確認できます。 以上、PowerShellでディレクトリ内のファイル総合計容量を確認する方法でした。 |