Конфликт TeamCity с символом % в шаге построения командной строки

У меня есть пакетный файл, который я использую для копирования папки, и его содержимое в новое место, он также создает имя папки на основе даты и времени (и это работает):

SET TODAY=%DATE:/=-%
SET NOW=%TIME::=-%
XCOPY /S /Y "C:BuildAgenttempbuildTmp" "C:Automation Results%TODAY%_%NOW%" 

Я добавил новый шаг конфигурации в настройку Team City, чтобы включить этот пакетный файл. Шаг сборки - это командная строка - пользовательский скрипт:

Build Step

но это отрицательно влияет на требования агента TC, и я не могу запустить свой TC строит:

Agent Requirements

эта проблема, похоже, связана с неявными требованиями TC:

http://confluence.jetbrains.com/display/TCD8/Agent + требования

"Неявные Требования Любая ссылка (имя в %-знаках) на неизвестный параметр считается "неявным требованием". Это означает, что сборка будет выполняться только на агенте, который предоставляет именованные параметры. В противном случае параметр должен быть доступен для создайте конфигурацию, определив ее на уровнях конфигурации сборки или проекта."

Как я могу обойти этот конфликт TC с символом%, который мне нужен в моем пакетном файле?

2 ответов


использовать %% вместо %

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

это гарантирует, что переменные рассматриваются как переменные пакетного файла вместо переменных TeamCity.


поместите содержимое скрипта сборки в файл, например, скопируйте.bat и вызовите этот пакетный файл из TeamCity

Addtionally, изменение от Custom script до Executable with parameters

enter image description here