Увеличение значения переменной float на 1 с помощью пакетного скрипта - PullRequest
0 голосов
/ 26 марта 2019

Мне нужно увеличивать float значение переменной versionName каждый раз, когда я запускаю пакетный скрипт. Как 2,5 до 2,6, 2,7 и т. Д. .

Это мой файл

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="auto" package="com.sisapp.in.globalthesc" android:versionName="2.5" android:versionCode="8">
    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="28" />
    <supports-screens android:resizeable="true"  android:largeScreens="true"/>
    <application android:icon="@drawable/sisIconLaunch">        
        <receiver android:name=".DeviceBootReceiver" />
    </application>
</manifest>

Я пытаюсь, как показано ниже, но это не работает

@echo off
set "inputfile=D:\raja\SIS\SIS_Product\edTheSIS\AppIcons\Global\MenifestFile\AndroidManifest.xml
set /A versionName=%versionName%+1

1 Ответ

2 голосов
/ 26 марта 2019

Хорошо, позвольте мне начать с того, что пакетная обработка - не лучший инструмент для манипулирования файлами 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!
  )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...