使用TeamCity构建脚本中的百分号

时间:2010-12-08 16:42:59

标签: teamcity

我正在尝试设置运行自定义命令行脚本的TeamCity构建过程。该脚本使用变量,因此需要百分号(例如%x)。但是TeamCity对其属性使用百分号(例如%build.number%),因此脚本中的百分号会在运行时被删除。

如果脚本包含:

for /d %x in ("c:\*") do @echo "%x"

这就是它实际运行的内容:

for /d x in ("\*") do @echo "x"

如何编写脚本以便包含变量?

3 个答案:

答案 0 :(得分:58)

如果你想将%传递给TeamCity,你应该用其他%来逃避它,即%必须是%%。

但是Windows命令行将%视为转义字符,所以你应该再次转义它,在每个%之前再添加%,即对于%%,你应该传递%%%%

流程是:

%%%% in cmd -> %% in TeamCity -> % actual sign.

tl;博士:回答你的问题:

for /d %%%%x in ("c:\*") do @echo "%%%%x"

答案 1 :(得分:32)

尝试for /d %%x in ("c:\*") do @echo "%%x"(即复制%符号)。

但应该有一种方法告诉TC单独留下文件。如果TC会删除来源中的百分号,那将是可怕的。因此,我非常确定您在配置中执行了一些操作,以便替换%

在类似的说明中,是否真的TC与剧本混淆?或者您使用构建工具来生成脚本或类似的东西吗?

答案 2 :(得分:3)

似乎TeamCity只是简单地将您输入的内容粘贴到a .cmd文件中 在这些情况下,for语句需要双倍百分比。 然后看来TeamCity删除了其中一个%符号,因此tspauld为什么要让它工作(这也是我如何运行它)。

在日志中,似乎TeamCity在这里创建了一个文件Program Files\TeamCity\buildAgent\temp\agentTmp,但是for cmd执行并且很快就会死掉它以查看它所写的内容,大概是如果第一行是一个长时间执行的任务,你将能够检查一下(恼人地'暂停'不起作用)。