none
空白を含むパラメータをバッチファイルに指定するには? RRS feed

  • 質問

  • Aのようなバッチファイルで、空白を含む文字列をパラメータとして、BのPS1ファイルを実行しようとすると、Cのような結果になります。1つのダブルクォーテーションで囲んだ部分に空白があると、、2つの引数とみなされてしまいます。空白を含む文字列を1つの文字列としてあつかう方法はありますか?

    バッチファイルA(A.bat):
    powershell .\B.ps1 "2010/1/1 10:00"
    pause

    スクリプトファイルB(B.ps1):
    foreach($arg in $args)
    {
    echo $arg
    }

    結果C:
    2010/1/1
    10:00:

    期待する結果:
    2010/1/1 10:00

    2010年1月29日 18:02

回答

  • egegeさん

    これもどうでしょうか。

    powershell .\B.ps1 "2010/1/1` 10:00"

    PowerShellでのエスケープ文字であるバッククォート(`)を使っています。
    このエスケープ文字を、半角スペースの直前に挿入することで、半角スペースを、
    引数の区切りとしてではなく、文字列の一部として、PowerShellに認識させています。

    詳しくは、Powershellにて、help about_escape_characters と実行してみてください。
    • 回答としてマーク 服部清次 2010年2月12日 7:21
    2010年2月2日 2:33
  • egege さんこんにちは

    powershell .\B.ps1 '2010/1/1 10:00'

    のようにシングルクォートで囲めばうまくいきませんか

    複数の引数を指定したい場合は全体をダブルクォーテーションで囲います。

    powershell .\B.ps1 "'2010/1/1 10:00' '2010/1/2 10:00'"
    • 回答としてマーク 服部清次 2010年2月12日 7:21
    2010年1月31日 6:16
  • powershell 2.0 ならば、

    powershell -file B.ps1 "2010/1/1 10:00"

    でなければ、

    powershell .\B.ps1 \"2010/1/1 10:00\"

    または、

    powershell .\B.ps1 """2010/1/1 10:00"""
    • 回答としてマーク 服部清次 2010年2月12日 7:21
    2010年2月3日 10:33

すべての返信

  • egege さんこんにちは

    powershell .\B.ps1 '2010/1/1 10:00'

    のようにシングルクォートで囲めばうまくいきませんか

    複数の引数を指定したい場合は全体をダブルクォーテーションで囲います。

    powershell .\B.ps1 "'2010/1/1 10:00' '2010/1/2 10:00'"
    • 回答としてマーク 服部清次 2010年2月12日 7:21
    2010年1月31日 6:16
  • egegeさん

    これもどうでしょうか。

    powershell .\B.ps1 "2010/1/1` 10:00"

    PowerShellでのエスケープ文字であるバッククォート(`)を使っています。
    このエスケープ文字を、半角スペースの直前に挿入することで、半角スペースを、
    引数の区切りとしてではなく、文字列の一部として、PowerShellに認識させています。

    詳しくは、Powershellにて、help about_escape_characters と実行してみてください。
    • 回答としてマーク 服部清次 2010年2月12日 7:21
    2010年2月2日 2:33
  • powershell 2.0 ならば、

    powershell -file B.ps1 "2010/1/1 10:00"

    でなければ、

    powershell .\B.ps1 \"2010/1/1 10:00\"

    または、

    powershell .\B.ps1 """2010/1/1 10:00"""
    • 回答としてマーク 服部清次 2010年2月12日 7:21
    2010年2月3日 10:33
  • handcraftさん、Saitoさん、ウィンドウズスクリプトプログラマさん、 情報ありがとうございます。 すべての方法について、有効であることを確認しました。 powershell .\B.ps1 '2010/1/1 10:00' 2.0なら、 powershell -file B.ps1 "2010/1/1 10:00" が、よさそうですね。
    2010年2月3日 15:36
  • egege さん、

    こんにちは!
    フォーラム オペレーターの服部 清次です。

    今回、handcraft さん、Masashi Saito さん、ウィンドウズスクリプトプログラマ さんのお三方の回答が参考になったようですので、
    勝手ながら、私の方で [回答としてマーク] のチェックを付けさせていただきました。

    また何か疑問や質問がございましたら、お気軽に TechNet フォーラムにご投稿ください。
    今後とも、よろしくお願いします。
    それでは、また! (^_^)/


    __________________________________________________
    マイクロソフト株式会社 フォーラム オペレーター 服部 清次

    2010年2月12日 7:23