2016-11-29 101 views
-1

更換作業我這是在Windows中執行命令行的TeamCity構建步驟7.
我們應該逃避腳本使用雙百分號等變量轉義字符在TeamCity的

如何逃避未來建築使用它在TC步驟?

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

我不明白你的問題。請您詳細說明並提供一個例子。 – Squashman

+0

是的。當我們在TC步驟中使用內部腳本變量時,我們應該在%% var %%中將它們轉義。我如何逃脫「!」在字符串「set Build =%Build:\ =!word!%」中替換其中的數據? – pic0

+0

請[編輯]你的問題,並添加** 1 ** [mcve]和** 2nd **你得到了什麼*與*你期望從你的代碼得到什麼。也許'設置Build =!Build:\ =%word%!'可以工作嗎? – JosefZ

回答

0

我想你指的teamcity buildstep如果 你想從正在擴大的一種方式 是將percentsign這也是推遲 擴張的方法翻番轉義百分號。感嘆號是 的替換字符使用時的百分號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