Как четко указано в предыдущем вопросе, пакет не лучший инструмент для этого, и если формат xml изменяется каким-либо образом, особенно в строке <manifest
, он не будет работать. Таким образом, независимо от того, вот комбинированный сценарий (предыдущий вопрос) и этот. Попробуйте и дайте мне знать.
@echo off
setlocal enabledelayedexpansion
set "inputfile=D:\Arvind.ch\SIS\SIS_Product\SIS-Global-Dev\edTheSIS\AppIcons\Global\MenifestFile\AndroidManifest.xml"
for /f tokens^=8^,10delims^=^" %%i in ('type "%inputfile%" ^| findstr "android:versionName"') do (
set vers=%%i
set code=%%j
)
for /f "tokens=1,2 delims=." %%i in ("!vers!") do (
set decia=%%i
set decib=%%j
if "!decib!" lss "9" (
set /a decib+=1
) else (
set decib=0
set /a decia+=1
)
set newver=!decia!.!decib!
)
for /f "tokens=1" %%i in ("!code!") do (
set cnt=%%i
set /a cnt+=1
)
set newcode=!cnt!
for /f "tokens=*" %%a in ('type "%inputfile%" ^| find /v /n "" ^& break ^> "%inputfile%"') do (
set "str=%%a"
call set "str=%%str:*]=%%"
if "!str:~0,15!" == "<manifest xmlns" set "str=!str:"%vers%"="%newver%"!"
if "!str:~0,15!" == "<manifest xmlns" set "str=!str:"%code%"="%newcode%"!"
>>%inputfile% echo(!str!
)
Причины возникновения проблем заключались в том, что вы смешали имена переменных из старого кода и нового. Это установит значение от одного к следующему, а также потому, что мы выполняем одинаковые поиски по всему сценарию, старые вещи будут обновляться новыми, поэтому, опять же, это не лучшее решение, powershell был бы лучшим. Но я включил в замену несколько двойных кавычек, чтобы попытаться быть более конкретным, но это не идеально.