【PowerShell】特定ディレクトリのファイルを再帰的に削除する

当ページのリンクには広告が含まれています。

あんまり使うことは無いかもだけど、個人的に使いたい場面があったのでメモ。

ローカルのディレクトリでごにょごにょ作業してて、その構成が案外良く、テンプレートとして別の場所で使いたい、でも既に置かれているファイルは消してきれいにしたい。みたいな限定的な使い方ができるはず。

このPowerShellを配置して実行すると、同じ階層にあるファイル、同階層のディレクトリ配下のファイルを全て消し飛ばす事ができる。もちろんだけど、実行する場合は注意が必要。必要なものも消えちゃうから。そう、思い出とか。

# このスクリプトを配置したディレクトリのパスを取得
$scriptDirectory = Split-Path -Parent $MyInvocation.MyCommand.Path

# 自ファイル名を取得
$scriptName = $MyInvocation.MyCommand.Name

# 削除対象のファイルパスを再帰的に取得
$files = Get-ChildItem -Path $scriptDirectory -File -Recurse | Where-Object { $_.Name -ne $scriptName }

# ファイル削除
$files | Remove-Item -Force

# 完了メッセージ
$wsobj = new-object -comobject wscript.shell
$result = $wsobj.popup("処理が完了しました")

条件分岐もループもないとってもシンプルな処理だけど、これでやりたいことは実現できた。現場ではWindow端末で開発するのが一般的なので、PowerShellでこういうツールを作るアイデアがあると、色々楽をできるはず。

PowerShellがあんまり分からなくても、このくらいであればChatGTPにお願いすれば完成する。

他にもファイル名の文字列を一括置換したり、ファイル内の文字列を一括置換したりと、PowerShellは真面目に向き合いたくないしょーもない作業をどうにかしてくれる可能性を秘めている。

もともとこの役割を担っていたVBScriptが引退するみたいなので、偶然これを見てしまった方は、これを機に少し触ってみよう。

目次