Using the percent sign in TeamCity build scripts

tspauld picture tspauld · Dec 8, 2010 · Viewed 16.9k times · Source

I am trying to set up a TeamCity build process that runs a custom command line script. The script uses a variable so it needs a percent sign (e.g. %x). But TeamCity uses percent signs for its properties (e.g. %build.number%), so the percent sign in the script gets removed when it runs.

If the script contains this:

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

This is what it actually runs:

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

How can I write my script so it can include variables?

Answer

Marat Turaev picture Marat Turaev · Jan 17, 2013

If you want to pass % to TeamCity, you should escape it with other %, i.e. for % it must be %%.

But windows command line considers % as an escape character, so you should escape it again adding another % before each %, i.e. for %% you should pass %%%%

Flow is:

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

tl;dr: answer to your question will be:

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