晴耕雨読

working in the fields on fine days and reading books on rainy days

[PowerShell] Get-Itemでファイルサイズを取得する

PowerShell でファイルサイズを取得するには Get-Item コマンドレットと Length プロパティを組み合わせることで、ファイルサイズを取得することができます。

(Get-Item sample.txt).Length

対象ファイルのサイズが 0 byte かを確認したい場合は、if の条件文の中で -eq 演算子で 0 と等しいか確認することで、ファイルサイズが 0 byte のときの処理を書くことができます。

if ((Get-Item sample.txt).Length -eq 0) {
  Write-Output "Hello, world!" >> sample.txt
}

再帰的にフォルダ内の空ファイルを全て表示する

Linuxのfindコマンドのように、再帰的にフォルダ内にあるファイルを調べるには、Get-ChildItem コマンドレットに -Recurse オプションを追加して実行し、その結果を where (Where-Object) コマンドレットでフィルタリングし、foreach (ForEach-Object) コマンドレットで回すことで、ファイルサイズが 0 byte のファイル一覧を表示することができます。

Get-ChildItem -Recurse |
  where { (Get-Item $_.FullName).Length -eq 0 } |
  foreach {
    Write-Output "Empty File: $_.Name"
  }

以上です。

参考文献