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

Jenkins生成含百分号的文件夹名不被Visual Studio支持的解决方案咨询

解决方案

方案1:修改Jenkins配置,彻底避免生成带百分号的路径

这是优先级最高的方案,从根源消除特殊字符问题:

  • 进入多分支流水线的配置页面,找到「分支源」板块下对应Subversion源的配置项,修改「本地分支名生成规则」,将分支名中的/直接替换为-或其他合法字符,原来匹配branches/*的foo分支会生成为branches-foo,不会再出现编码后的%2F字符。
  • 若使用Jenkinsfile声明式流水线,可在配置块中指定自定义工作目录,强制替换路径中的编码字符:
    pipeline {
        agent any
        options {
            customWorkspace "workspace/${JOB_NAME.replace('%2F', '-')}"
        }
        // 剩余流水线配置
    }
    
  • 升级Jenkins Subversion插件至2.15.1及以上版本,该版本新增了「禁用分支路径URL编码」的开关,开启后不会自动将分支名中的/编码为%2F。

方案2:适配带百分号的路径,修改构建命令逻辑

如果不便修改Jenkins配置,可通过转义处理解决批处理的特殊字符解析问题:

  • 报错的根本原因是%在Windows批处理中是变量前缀的特殊标识符,MSVC自定义构建步骤的执行上下文属于批处理环境,单个%会被识别为变量引用导致路径解析错误,手动执行时无相关变量冲突所以可正常运行。只需要将路径中的单个%转义为%%即可被批处理识别为普通字符。
  • 修改MSVC自定义构建步骤的命令,先对$(ProjectDir)做转义处理再使用,示例如下:
    :: 先把ProjectDir的值存入变量,再转义其中的%
    set "RAW_PROJ_DIR=$(ProjectDir)"
    set "SAFE_PROJ_DIR=%RAW_PROJ_DIR:%=%%%"
    :: 用转义后的路径执行构建命令
    CALL "%VS120COMNTOOLS%VsDevCmd.bat" && msbuild.exe /m "%SAFE_PROJ_DIR%toto.sln" /target:build /property:Configuration=Debug
    
  • 也可使用Windows 8.3短路径规避特殊字符问题,在对应目录下执行dir /x即可查看目录的短路径名称,使用短路径执行命令不会触发特殊字符解析。

内容的提问来源于stack exchange,提问作者A. Richard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:06:03