PowerShellで名前に”[]”を含むファイルへのアクセス

PowerShellで名前に”[]”を含むファイルにアクセスする場合にはエスケープが必要。

#
# notepad.exeでファイルを作成してみる
#
notepad (Join-Path -Path $Env:TEMP -ChildPath "test[1].txt")

#
# Test-Pathで所在を確認してみる
#
Test-Path -Path (Join-Path -Path $Env:TEMP -ChildPath "test[1].txt");
#=> False

# エスケープすれば正しい結果が得られる
Test-Path -Path ((Join-Path -Path $Env:TEMP -ChildPath "test[1].txt").Replace("]", "``]").Replace("[", "``["));
#=> True

Get-ChildItemでファイル一覧を取得し、そのFullNameを元にパスをごにょごにょしてCopy-ItemMove-Itemするときには注意が必要。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です