如何在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"
/>

嵌入式空间当然出现在“程序文件”中。

Answers:


192

使用&quot;编码的双引号,你想net看看里面Command的属性值:

<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

@ jnm2您不能&quot;在第二个之后添加另一个吗?Command="quot;$(PathWithTrailingBackslash)&quot;&quot;"
TetraDev

@TetraDev然后,反斜杠仍然缺失,并且您有一个未公开的报价,我不确定其效果。
jnm2

84

您可以对命令使用单引号,例如

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

(从MSBuild exec任务开始,没有阻塞


对我而言,请使用单引号而不是“ 这是一个更好的解决方案。因为“。” 当您尝试执行XmlPoke时,这可能会导致问题,它以一种有趣的方式来分隔字符:from&quot; 到&amp; quot;
JavierD 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.