2013-11-22 69 views
0

我有一個關於批處理的問題。批處理腳本更新屬性文件中的文本

我在目錄中有一個屬性文件。其中有一個文本「BuildNumber = 0」。我想用「BuildNumber =%BUILD_NUMBER%」替換這個「BuildNumber = 0」。我使用下面的腳本這個腳本是實現這一

@echo on 
setlocal enabledelayedexpansion enableextensions 


ATTRIB -r -s C:\bldarea\myfile\..\..\jenkinstest\abc.properties 

CD C:\bldarea\myfile\file\Main_Releases\jenkinstest\ 
call :FindReplace "Buildnumber=0" "Buildnumber=%BUILD_NUMBER%" abc.properties 
exit /b 

:FindReplace <Buildnumber=0> <Buildnumber=%BUILD_NUMBER%> <abc.properties> 
set tmp="%temp%\tmp.txt" 
If not exist %temp%\_.vbs call :MakeReplace 
for /f "tokens=*" %%a in ('dir "%3" /s /b /a-d /on') do (
for /f "usebackq" %%b in (`Findstr /mic:"%~1" "%%a"`) do (
echo(&Echo Replacing "%~1" with "%~2" in file %%~nxa 
<%%a cscript //nologo %temp%\_.vbs "%~1" "%~2">%tmp% 
if exist %tmp% move /Y %tmp% "%%~dpnxa">nul 
) 
) 
del %temp%\_.vbs 
exit /b 

:MakeReplace 
>%temp%\_.vbs echo with Wscript 
>>%temp%\_.vbs echo set args=.arguments 
>>%temp%\_.vbs echo .StdOut.Write _ 
>>%temp%\_.vbs echo Replace(.StdIn.ReadAll,args(0),args(1),1,-1,1) 
>>%temp%\_.vbs echo end with 

的問題,它的轉化率不BuildNumber = 0到目前的版本號。

從在代碼行:

:FindReplace <Buildnumber=0> <Buildnumber=%BUILD_NUMBER%> <abc.properties> 

如果刪除%符號則打印 「BuildNumber =%BUILD_NUMBER%」,但 「BuildNumber = 0」 仍然存在在doc。有人可以幫我出來正確地替換文本。

謝謝。

+0

爲%BUILD_NUMBER%的整體環境變量?如果不是,它從哪裏來?你不需要改變例程,只需調用它。 –

+0

我正在通過jenkins發佈構建只有我將%BUILD_NUMBER%定義爲全局變量。它隨每個BuildNumber而變化。 – vicky

+0

Jenkins如何將該變量傳遞給批處理文件? –

回答

0

只需插入雙百分比在這一行:

call :FindReplace "Buildnumber=0" "Buildnumber=%BUILD_NUMBER%" abc.properties 

這樣:

call :FindReplace "Buildnumber=0" "Buildnumber=%%BUILD_NUMBER%%" abc.properties 
+0

嗨Aacini我仍然在文件中獲得相同的輸出。 '#Fri年11月22 18點48分45秒IST 2013 BuildType = dev的 FrameworkBuild = 244 BuildNumber = 0 的ProductVersion = 5.00.00 SoftwareFeatureID = 99990101 的SequenceNumber = 20131122 Buildnumber = 82 FrameworkVersion = 2.50.00' 是有一種方法可以刪除這個額外的buildnumber = 0文本。 – vicky

+0

以這種方式測試'FindReplace'是否正常工作:'call:FindReplace「BuildNumber = 0」「」abc.properties'。運行它並檢查結果......看起來替換是區分大小寫的。 – Aacini

+0

嗨Aacini,腳本運行良好我找出問題。在批處理腳本之後運行的xml注入值BuildNumber = 0。所以謝謝你的幫助。 – vicky