• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:powershellどんなファイル名でも取得したい)

powershellで任意のファイル名を取得する方法

このQ&Aのポイント
  • powershellを使用して、任意のファイル名を取得する方法について教えてください。
  • batファイルを使用してps1ファイルを実行する際に、ファイル名によって正常に読み込めない場合がある問題について解決方法を教えてください。
  • ファイル名に半角丸括弧や半角&が含まれている場合でも、正常に取得する方法があるか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

>動作は特に変わりないです。 そうですか。"%~1" であれば、ドラッグドロップしたファイルのファイル名にどんな文字が使われていようとバッチファイル的には問題なしです。引用符に囲まれた形でPowerShell に正しく伝わります。 あとは、PowerShell側の問題ですね。 ググった感じでは、PowerShellは特殊文字を含んだファイル名をそのままでは扱えず、バッククォートでエスケープする必要があるようです。下記のような感じ。記号は必要なだけ同じ要領で増やしてください。 setlocal set A="%~1" set A=%A:`=``% set A=%A:&=`&% set A=%A:(=`(% set A=%A:)=`)% powershell "D:\...\ABC.ps1" %A%

omorinoya35234
質問者

お礼

うーん上記のようにかいても駄目ですね。 &に関してはbatで読み込んでる時点で途切れているので。 ただ、%A:○=`●%で白と黒を置換できるのは知らなかったので勉強なりました。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

PowerShellはよく知りませんが、バッチファイルの標準的な書き方では、下記です。 powershell "D:\...\ABC.ps1" "%~1" " " に囲まれていない & などの特殊文字は特殊な働き(&だとコマンドの区切り)をします。

omorinoya35234
質問者

お礼

%~1の方ですか。変更してみましたが、 動作は特に変わりないです。 うーんそもそもbatで&などの特殊文字をそのまま 取得は無理なんですかね。 完全に文字列として取得するがあるかと思ったのですが。