Хорошо, позвольте мне начать с того, что пакетная обработка - не лучший инструмент для манипулирования файлами xml
, есть инструменты, которые могут работать намного лучше, чем пакетная обработка.
Обратите внимание, что этот сценарий является чистохак, если формат вашего xml
файла изменится (особенно теговая строка манифеста) с тем, что вы опубликовали, то он не будет работать и БУДЕТ сломать ваш файл.Поэтому перед началом создайте резервную копию вашего xml
файла .
Кроме того, это явно заменяет найденное числовое значение, если значение существует где-либо еще в файле, оно такжезамените его.
И, наконец, очень важно, если ваш файл xml
состоит из каких-либо символов !
, это не поможет и будет исключено из замены.
@echo off
setlocal enabledelayedexpansion
set "inputfile=D:\raja\SIS\SIS_Product\edTheSIS\AppIcons\Global\MenifestFile\AndroidManifest.xml"
for /f tokens^=8^delims^=^" %%i in ('type "%inputfile%" ^| findstr "android:versionName"') do set vers=%%i
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=*" %%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%!"
>>%inputfile% echo(!str!
)