【问题标题】:How to escape quote marks in Exec Command in MSBuild如何在 MSBuild 的 Exec 命令中转义引号
【发布时间】:2011-01-25 17:20:48
【问题描述】:

我正在尝试构建一个 MSBuild 脚本,将网络驱动器映射到脚本中的驱动器号,但不幸的是,目标文件夹的路径包含一个嵌入空间。嵌入的空间导致映射失败,不知道是否可以转义路径周围的引号。我试过双引号,但 MSBuild 不喜欢它(或者 Windows XP 不喜欢它)。任何人都知道如何为这个野兽编码以便地图工作?

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

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

【问题讨论】:

    标签: msbuild


    【解决方案1】:

    使用&amp;quot; 对您希望netCommand 属性值内看到的双引号进行编码:

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

    【讨论】:

    • 这在你有Command="quot;$(PathWithTrailingBackslash)&amp;quot;" 时没有帮助,因为它呈现为"Path\With\Trailing\Backslash\",而\"" 的命令行转义序列,所以后面的所有参数都会搞砸。
    • @jnm2 你不能在第二个之后再添加一个&amp;quot; 吗? Command="quot;$(PathWithTrailingBackslash)&amp;quot;&amp;quot;"
    • @TetraDev 然后反斜杠仍然丢失,并且您有一个未闭合的引号,我不太确定它的效果。
    【解决方案2】:

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

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

    (来自MSBuild exec task without blocking

    【讨论】:

    • 对我来说使用单引号而不是 "这是一个更好的解决方案。因为“。当您尝试执行 XmlPoke 时,这可能会导致问题,它会以一种有趣的方式分隔字符:从 "到&quot;
    猜你喜欢
    • 2021-07-11
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 2012-12-14
    • 2011-02-15
    • 1970-01-01
    相关资源
    最近更新 更多