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?
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"