Экранирование символов вместо операции в TeamCity

У меня есть шаг сборки TeamCity в командной строке, который выполняется в Windows 7.
Мы должны экранировать переменные в скрипте с двойным процентом и т. д.

Как избежать следующей конструкции для ее использования на шаге TC?

set word=\\
set Build=%Build:\=!word!%
set enter=\n
set Build=%Build:""=!enter!%

person pic0    schedule 29.11.2016    source источник
comment
Я не понимаю вашего вопроса. Не могли бы вы уточнить и привести пример.   -  person Squashman    schedule 29.11.2016
comment
Да. Когда мы используем внутренние переменные скрипта на шаге TC, мы должны экранировать их в %%var%%. Как мне сбежать! в строке установить Build=%Build:\=!word!% для замены в ней данных?   -  person pic0    schedule 29.11.2016
comment
Пожалуйста, отредактируйте свой вопрос и добавьте 1st a минимальный воспроизводимый пример и второй что вы получаете, по сравнению с что вы ожидаете получить от своего кода. Может быть, set Build=!Build:\=%word%! сработает?   -  person JosefZ    schedule 30.11.2016


Ответы (1)


Я думаю, вы ссылаетесь на шаг сборки TeamCity. Если вы хотите избежать знака процента из одним из способов расширения является удвоение знака процента, что также является методом отложенного расширения. Восклицательный знак заменяет знак процента при использовании setlocal EnableDelayedExpansion.

Непонятно, чего вы пытаетесь добиться своим кодом.

В cmd замена \n не будет работать.

Если вы намерены просто передать % без изменений через эхо в cmd, удвоения должно быть достаточно. Если включено отложенное расширение, возможно, вам придется экранировать восклицательный знак знаком вставки ^!.

Этот код:

@Echo off&setlocal EnableDelayedExpansion
Set Build=C:\Test\Build""secondline
set word=\\
set LF=^


rem The TWO empty lines above are required
rem See http://stackoverflow.com/a/5642300/6811411

set Build2=%Build:\=!word!%
set Build2=%Build2:""=^^!LF^^!%
Echo Build =%Build%
Echo Build2=%Build2%

Производит этот вывод здесь:

Build =C:\Test\Build""secondline
Build2=C:\\Test\\Build
secondline
person Community    schedule 30.11.2016