我有一個關於批處理的問題。批處理腳本更新屬性文件中的文本
我在目錄中有一個屬性文件。其中有一個文本「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。有人可以幫我出來正確地替換文本。
謝謝。
爲%BUILD_NUMBER%的整體環境變量?如果不是,它從哪裏來?你不需要改變例程,只需調用它。 –
我正在通過jenkins發佈構建只有我將%BUILD_NUMBER%定義爲全局變量。它隨每個BuildNumber而變化。 – vicky
Jenkins如何將該變量傳遞給批處理文件? –