WindowsでBatchやPowerShellを用いて、Linuxと同じように空ファイルや空ディレクトリを抽出、それらを一括削除する方法があるかを調べてみた。
1.空ファイルの削除
カレントディレクトリ配下の空ファイルを一括削除する場合、以下のようにする。
(PowerShellの方は再帰的に削除させている)
Batch(cmd)の場合
for %F in (*) do if %~zF equ 0 del "%F"
PowerShellの場合
get-childItem -recurse | where {$_.length -eq 0} | remove-Item
2.空ディレクトリの削除
カレントディレクトリ配下の空ディレクトリを一括削除する場合、以下のようにする。
Batch(cmd)の場合
for /f "usebackq delims=" %d in (`"dir /ad/b/s | sort /R"`) do rd "%d"
PowerShellの場合
Get-ChildItem -recurse | Where-Object {$_.PSIsContainer -eq $true -and (Get-ChildItem -Path $_.FullName) -eq $null} | Remove-Item