TeamCity与命令行构建步骤中的%符号冲突

时间:2014-05-27 10:08:05

标签: teamcity

我有一个批处理文件,用于将文件夹及其内容复制到新位置,它还会根据日期和时间创建文件夹名称(这样可以):

SET TODAY=%DATE:/=-%
SET NOW=%TIME::=-%
XCOPY /S /Y "C:\BuildAgent\temp\buildTmp" "C:\Automation Results\%TODAY%_%NOW%\" 

我在Team City设置中添加了一个新的配置步骤,以包含此批处理文件。构建步骤是命令行 - 自定义脚本:

Build Step

但这会对TC代理要求产生负面影响,我无法启动TC版本:

Agent Requirements

这个问题似乎与TC隐含要求有关:

http://confluence.jetbrains.com/display/TCD8/Agent+Requirements

“隐含要求 对未知参数的任何引用(%-signs中的名称)都被视为“隐式要求”。这意味着构建将仅在提供命名参数的代理上运行。否则,通过在构建配置或项目级别定义参数,该参数应该可用于构建配置。“

如何在我的批处理文件中使用%符号解决此TC冲突?

2 个答案:

答案 0 :(得分:12)

使用%%代替%

SET TODAY=%%DATE:/=-%%
SET NOW=%%TIME::=-%%
XCOPY /S /Y "C:\BuildAgent\temp\buildTmp" "C:\Automation Results\%%TODAY%%_%%NOW%%\"

这将确保将变量视为批处理文件变量而不是TeamCity变量。

答案 1 :(得分:2)

将构建脚本的内容放在文件中,例如copy.bat并从TeamCity调用此批处理文件

另外,从Custom script更改为Executable with parameters

enter image description here

相关问题