空のフォルダーをサブフォルダーごと削除するWindows PowerShellスクリプト

システムを運用していく中で、あるいは個人のPCで、定期的に空のフォルダーを削除したい場合、意外に面倒だ。フォルダーの階層が浅ければ何とかなるが、深い階層のフォルダーをひとつひとつ見ていくのは手間だ。そこでWindows PowerShellを使って空フォルダーだけを削除するスクリプトを組んでおくと楽になる。

空のフォルダーの中にサブフォルダーしかない場合は削除したいが、ひとつでもファイルがある場合はそのフォルダーだけは残したい。そんなときにGet-ChildItemで渡されるオブジェクトがDirectoryInfoであることでフォルダーと判断し、さらにはGetFilesメソッドでファイルの件数を見て0件だったら削除する。

不安な場合はRemove-Itemに-WhatIfをつけて一度実行してみて、どのフォルダーが削除されるのかを確認してから-WhatIfを消して実行するといいだろう。