65983


お世話になっております。  
バッチファイルでは「^」記号でコマンドや変数等を複数行にわけて入力することができます。  
しかし、この際、ダブルクォーテーションがあるとエラーとなってしまいます。  
一応サンプルのバッチファイルを掲載します。

[code]

    @echo off
    set ProgramPath=C:\Program Files\example\test.exe
    set var1=あいうえお
    set var2=かきくけこ
    set runcmd=^
    "%ProgramPath%" ^
    /var1="%var1%" ^
    /var2="%var2%"
    echo "running %runcmd%"
    pause
    
[/code]

これを実行すると、下記のようにエラーが出力され、うまく実行することができません。

[code]

    '/var1' は、内部コマンドまたは外部コマンド、
    操作可能なプログラムまたはバッチ ファイルとして認識されていません。
    "running "C:\Program Files\example\test.exe" ^"
    
[/code]

環境は、Windows10 1909 64ビットです。  
何かよい対処法はないでしょうか。  
アドバイスいただけますと幸いです。  
よろしくお願いいたします。


CC BY-SA 4.0
2020-04-26T01:24:56.860
65968
2020-04-26T06:54:35.623
2020-04-26T06:54:35.623
3060
29034
question
windows batch-file
バッチファイルで変数を複数行にわけて指定したときのダブルクォーテーションの指定について


スマートとは言えませんが、単なる環境変数の編集なので、1度にやろうとせず順次追記していけば良いのではないでしょうか？  
%PATH%の編集(追記)と同じ考え方ですね。

[code]

    set runcmd="%ProgramPath%"
    set runcmd=%runcmd% /var1="%var1%"
    set runcmd=%runcmd% /var2="%var2%"
    
[/code]

`echo "running %runcmd%"`の結果は以下のようになります。

[code]

    "running "C:\Program Files\example\test.exe" /var1="あいうえお" /var2="かきくけこ""
    
[/code]


CC BY-SA 4.0
2020-04-26T01:54:00.470
65969
2020-04-26T01:54:00.470
26370
65968
answer


BATファイルで見栄えを良くしようというのは諦めた方がいいです。ですので無理に改行を入れるよりは１行で記述すべきです。  
その上で`^`がうまく機能しない件については、行頭に空白を入れると良さそうです。

[code]

    @echo off
    set ProgramPath=C:\Program Files\example\test.exe
    set var1=あいうえお
    set var2=かきくけこ
    set runcmd=^
     "%ProgramPath%"^
     /var1="%var1%"^
     /var2="%var2%"
    echo "running %runcmd%"
    pause
    
[/code]


CC BY-SA 4.0
2020-04-26T06:25:48.760
65983
2020-04-26T06:25:48.760
4236
65968
answer