MSBuildのExecコマンドで引用符をエスケープする方法


131

ネットワークドライブをスクリプト内のドライブ文字にマップするMSBuildスクリプトをビルドしようとしていますが、残念ながらターゲットフォルダーへのパスには埋め込みスペースが含まれています。埋め込まれたスペースが原因でマッピングが失敗します。パスの周りの引用符をエスケープできるかどうかはわかりません。私は二重引用符を試しましたが、MSBuildはそれを好みません(それもWindows XPも好みません)。マップを機能させるために、この獣のコーディング方法を知っている人はいますか?

<Exec Command="net use x: \\ofmapoly703\c$\program files\ar\iap /user:$(UserID) $(Password)"
WorkingDirectory="c:\"
ContinueOnError="false"
/>

もちろん、埋め込まれたスペースは「プログラムファイル」で発生します。

回答:


192

属性値内に表示&quot;する二重引用符をエンコードするために使用します。netCommand

<Exec Command="net use x: &quot;\\ofmapoly703\c$\program files\ar\iap&quot; /user:$(UserID) $(Password)" 
WorkingDirectory="c:\" 
ContinueOnError="false" 
/> 

7
これは、あなたが持って助けないCommand="quot;$(PathWithTrailingBackslash)&quot;"、それはとしてレンダリングするので"Path\With\Trailing\Backslash\"\"するためのコマンドラインエスケープシーケンスである"ので、以下のすべての引数がめちゃくちゃます。
jnm2 2017

@ jnm2 &quot;2つ目以降に追加していただけませんか?Command="quot;$(PathWithTrailingBackslash)&quot;&quot;"
TetraDev

@TetraDev次に、バックスラッシュがまだなく、閉じられていない引用符がありますが、その効果はよくわかりません。
jnm2

84

コマンドには一重引用符を使用できます。

  <Exec Command='explorer.exe "$(DestinationDir)"' IgnoreExitCode="true" />

MSBuild execタスクからブロックなし


私にとっては&quot;の代わりに一重引用符を使用します それはより良い解決策です。&quot ;. XmlPokeを実行しようとすると、問題が発生する可能性があります。これは、面白い方法で文字にスペースを入れようとするものです。&amp; quot;に
JavierD 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.