【powershell】 カギ括弧つきのフォルダ名へのSet-Location(cd)には注意(-LiteralPathオプション)
カギ括弧つきのフォルダ名へのSet-Location(cd)には注意
フォルダ名にカギ括弧([ ])があるときに、Set-Locationができなかったのでメモを残す。
目次
本文
1. カギ括弧付きのフォルダにはSet-Locationできない
> Set-Location "[2021]test" Set-Location : パス '[2021]test' が存在しないため検出できません。 発生場所 行:1 文字:1 + Set-Location "[2021]test" + ~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: ([2021]test:String) [Set-Location], ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.SetLocationCommand
2. カギ括弧をエスケープしてもダメ、シングルクォートでもダメ
当然ながら、エスケープシーケンス、シングルクォートも試してみた。
> Set-Location "`[2021`]test" ・・・エスケープ(powershellのエスケープは¥マークではなく、`バックスラッシュとのこと) Set-Location : パス '[2021]test' が存在しないため検出できません。 発生場所 行:1 文字:1 + Set-Location "`[2021`]test" + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: ([2021]test:String) [Set-Location], ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.SetLocationCommand > Set-Location '[2021]test' ・・・シングルクォート Set-Location : パス '[2021]test' が存在しないため検出できません。 発生場所 行:1 文字:1 + Set-Location '[2021]test' + ~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: ([2021]test:String) [Set-Location], ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.SetLocationCommand
3. 与えられた文字列がそのままパスとして使用されるオプションがある(-LiteralPath)
ネットで調べたら、-LiteralPathというオプションがあることを知った。
・-LiteralPath オプションの説明(DeepLで翻訳) 場所のパスを指定します。LiteralPathパラメータの値は、入力されたとおりに使用されます。ワイルドカード文字として解釈される文字はありません。 パスにエスケープ文字が含まれる場合は、シングルクォーテーションマークで囲みます。 シングルクォーテーションマークは、PowerShellがすべての文字をエスケープシーケンスとして解釈しないことを示します。 シングルクォーテーションマークは、Windows PowerShellがすべての文字をエスケープシーケンスとして解釈しないように指示します。
早速試してみる。
> Set-Location -LiteralPath "[2021]test" \[2021]test> ・・・すんなりOK
バージョン情報
> $PSVersionTable Name Value ---- ----- PSVersion 5.1.19041.1023