使用批处理脚本将float变量的值增加1

时间:2019-03-26 08:37:59

标签: batch-file

每次运行批处理脚本时,我需要增加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 个答案:

答案 0 :(得分:2)

好吧,所以我首先要说批处理不是操纵xml文件的最佳工具,有些工具比批处理要好得多。

还请注意,此脚本纯粹是一种黑客行为,如果您发布的xml文件的格式(特别是清单标记行)发生更改,则它将无法正常工作,并且 WILL < / em>中断文件。因此,在开始备份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!
  )