実現したいこと
Get-ChildItemを用いてフォルダとファイルの情報を取得したいのですが、パスに特殊文字があることで実行エラーが発生してしまいます。エスケープ方法があるかと思いますが調べても分からず投稿しました。ご存知の方は教えていただけると幸いです。
前提
システム
Poweshell 7.4
フォルダの名前は仕様で変更できません。
発生している問題・エラーメッセージ
Cannot find path ‘C:¥Users¥TEST¥Desktop¥10)テスト実行¥’ because it dose not exist.
該当のソースコード
PowersShell
1$path = ‘C:¥Users¥TEST¥Desktop¥10) `テスト実行¥aaa’ 2Get-ChildItem $path -Recurse
試したこと
Get-ChildItemを変数に格納せずに実行すると正常な結果が出力されました。
よろしくお願いします。
確認ですが、ディレクトリの文字列の中にバッククオート「`」が含まれているということであっていますか?
いいえ、含まれていません。
括弧はバッククォートでエスケープするのかと思い付けていました。
>Get-ChildItemを変数に格納せずに実行すると正常な結果が出力されました。
Get-ChildItem ‘C:¥Users¥TEST¥Desktop¥10) `テスト実行¥aaa’ -Recurse
こうしたらエラーにならなかったと言っていますか?
> 括弧はバッククォートでエスケープするのかと思い付けていました。
質問を見ると、バッククオートは「テ」の前にだけ付いているように見えますが、それが括弧につけたつもりのバッククオートですか?
実際のパスは「C:¥Users¥TEST¥Desktop¥10)テスト実行¥aaa」ですか? バッククオートを入れない場合どのような結果になりますか?
@YAmaGNZ
はい、その通りです。
@TakaiY
はい、その通りです。
入れない場合の結果は、「Unexpected token ’)’ in expression or statement.」と表示されます。
スクリプトファイルを作成して実行しているのであればUTF-8になってたりしませんか?
スクリプトファイルをShift_JISで保存している物と思います。
PowerShell 7.4との事なので、UTF8で保存しましょう。
手元の環境では7.5.1ですが、Shift_JISだと同様のエラーメッセージが出ます。
Unexpected token ’)’ の直接の原因は、シングルクォートが全角だから引用符と見做されず、括弧が文字列の外にあるので、構文エラーです。
半角シングルクォートに直して、Shift_JISで保存すると because it does not exist となりますが、これはエンコーディングの違いでファイル名が一致しないからでしょう。
@YAmaGNZ
BOM無し、UTF-8です。
@otn
BOM無し、UTF-8です。
シングルクォートは半角でした。
> BOM無し、UTF-8です。
その状態で、Unexpected token ’)’ in expression or statement のエラーになったということですか?
> シングルクォートは半角でした。
質問文のコードでは全角です。コピペしないで、全部手打ちで投稿したということですか?
それだと、実際に実行しているコードが不明なので、再現テストが不可能です。
実際に実行したコードをコピペしましょう。

回答1件
あなたの回答
tips
プレビュー