You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MSBuild脚本中转义百分号字符?

解决MSBuild中Exec命令含%密码的转义问题

在MSBuild里直接用$(PSW).replace('%','%%')是无效的,因为MSBuild的属性替换需要使用**.NET静态方法调用语法**,而非脚本式的简单replace写法。你可以按以下方式处理:

  • 定义转义后的密码属性
    在MSBuild项目文件中,先创建一个转义后的密码属性,将单个%替换为%%:

    <PropertyGroup>
      <EscapedPSW>$([System.String]::Replace('$(PSW)', '%', '%%'))</EscapedPSW>
    </PropertyGroup>
    
  • 在Exec命令中引用转义属性
    修改原Exec命令,使用转义后的$(EscapedPSW),同时保留MSBuild对双引号的转义语法&quot;:

    <Exec Command='net use \\myshare /user:$(USR) &quot;$(EscapedPSW)&quot;'/>
    

关键说明

MSBuild的属性函数必须遵循.NET静态方法调用格式,$([System.String]::Replace(原字符串, 目标字符, 替换字符))才是正确的字符串替换写法,之前的.replace()语法不符合MSBuild的规则,因此无法生效。

如果密码中还包含其他CMD需要转义的特殊字符(如&、|等),需额外处理,但针对%的场景,上述方案已能解决问题。

内容的提问来源于stack exchange,提问作者jing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 10:05:02