如何在 MSBuild 中转义 Exec 命令中的引号

我正在尝试构建一个 MSBuild 脚本,它将网络驱动器映射到脚本中的驱动器号,但不幸的是,到达目标文件夹的路径中包含一个嵌入空间。嵌入的空格导致映射失败,我不知道是否可以在路径周围转义引号。我试过双引号,但 MSBuild 不喜欢(或者 Windows XP 不喜欢)。有人知道怎么编写这个怪物的代码,这样地图就能用了吗?

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

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

43101 次浏览

使用 &quot;对双引号进行编码,您希望 netCommand属性值中看到这些双引号:

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

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

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

(来自 没有阻塞的 MSBuild 执行任务)

转义引号-使用 %22foo bar baz%22代替 "foo bar baz"

"的十六进制值是22。

参考文献

正如@Michael-Freidgeim 所详细说明的那样,解决这个问题的方法是使用单引号,但是在某些情况下,你仍然会遇到将尾部斜杠(在 Path 中)视为转义字符的问题,避免这种情况的一个好方法是沿着任何带点(。)的文件夹路径走