2010-12-08 5 views
30

사용자 지정 명령 줄 스크립트를 실행하는 TeamCity 빌드 프로세스를 설정하려고합니다. 스크립트는 변수를 사용하므로 백분율 기호 (예 : %x)가 필요합니다. 그러나 TeamCity는 속성에 백분율 기호 (예 : %build.number%)를 사용하므로 스크립트가 실행될 때 스크립트의 백분율 기호가 제거됩니다. 이 변수를 포함 할 수 있도록TeamCity 빌드 스크립트에서 백분율 기호 사용

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

가 어떻게 내 스크립트를 작성할 수 있습니다 :

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

이 실제로 실행하는 것입니다 :

스크립트이 포함되어있는 경우

?

+0

인 TeamCity; 당신은 그게 백분율이 될거야? –

+1

별도의 파일 대신 사용자 지정 스크립트를 사용하려고했습니다. 파일로 이동하면 도움이되었습니다. – tspauld

답변

28

시도해보십시오. for /d %%x in ("c:\*") do @echo "%%x" (즉, % 기호가 중복됩니다.)

그러나 TC에게 파일을 남겨 두라고 지시하는 방법이 있어야합니다. TC가 출처의 퍼센트 기호를 제거한다면 그것은 끔찍할 것이다. 따라서 %을 대체 할 수 있도록 구성에서 작업을 수행했다고 확신합니다.

비슷한 메모에서 스크립트를 사용하는 것은 실제로 TC입니까? 또는 빌드 도구를 사용하여 스크립트 또는 이와 비슷한 것을 생성하고 있습니까?

+0

원래는 별도의 파일 대신 사용자 지정 스크립트를 사용하려고했지만 중복 된 백분율 기호를 사용했지만 작동하지 않았습니다. 별도의 파일에서 그들을 사용하여 비록 작동합니다. – tspauld

+6

또한 퍼센트 기호를 3 배로하여 사용자 지정 스크립트로 작동하도록 할 수있었습니다. – tspauld

+0

여전히 스크립트가 손상되는 이유가 있어야합니다. 어떤 프로그램이'% build.number % '를 확장합니까? 정말 TC 야? 그렇다면 옵션을 해제해야합니다. 빌드 번호가 필요한 경우 다른 스크립트에 넣고 '호출'할 것을 권합니다. –

3

TeamCity는 사용자가 입력 한 내용을 그대로 유지하는 것 같습니다. a .cmd for 문은이 경우에 퍼센트를 요구합니다. TeamCity가 이러한 % 기호 중 하나를 제거한 것 같습니다. 따라서 tspauld가 작동하게 된 이유는 무엇입니까 (이 방법도 실행 방법입니다).

로그에서 TeamCity가 여기에 파일 Program Files\TeamCity\buildAgent\temp\agentTmp을 생성하는 것으로 보입니다.하지만 cmd가 실행되어 너무 빨리 죽어서 첫 번째 줄이 긴 실행 작업이었던 지 확인할 수 없습니다 (이 경우 확인할 수 있습니다. annoyingly '일시 중지'가 작동하지 않음).

50

TeamCity에 %를 (를) 전달하려면 다른 %와 함께 이스케이프해야합니다. 즉, %는 %% 여야합니다.

그러나 창 명령 줄 이스케이프 문자로 %를 고려, 그래서 당신이 다시 통과해야 즉 %%에 대한 %%%%

흐름이며, 각 % 전에 다른 %를 추가 탈출해야합니다

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

TL; DR : 귀하의 질문에 대답이 될 것입니다 : 그것은 에이전트 시스템에서 실행되는 파일을 터치하지 않습니다

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

안녕하세요 Marat, 귀하의 답변에 따라 명령 줄 빌드 단계에서 벗어날 수있었습니다. 그러나 나는 왜 %%가 부호를 벗어나기로되어있을 때 4 % 부호를 전달해야하는지 이해하지 못한다. 이것을 설명하는 문서에 대한 링크가 있습니까? – Newbee

+1

@Newbee 탈출구가 2 층 있습니다. 첫 번째는 TeamCity이고, 두 번째는 명령 줄입니다. 따라서 TeamCity에 %%%%를 전달하면 %%%로 해석하고이를 명령 행으로 전달합니다. 그런 다음 명령 행에서 %%를 취하여 %로 해석합니다. – Aura

+0

답변 해 주셔서 감사합니다. – QtRoS

관련 문제