Batch file 使用批处理脚本将浮点变量的值增加1
每次运行批处理脚本时,我都需要增加Batch file 使用批处理脚本将浮点变量的值增加1,batch-file,Batch File,每次运行批处理脚本时,我都需要增加floatvariableversionName值。比如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"
float
variableversionName
值。比如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>
好的,首先让我说批处理不是处理
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!
)
@echo关闭
延迟扩展
设置“inputfile=D:\raja\SIS\SIS\u Product\edTheSIS\AppIcons\Global\MenifestFile\AndroidManifest.xml”
对于/f令牌^=8^delims^=^“%%i in('type”%inputfile%%“^ | findstr”android:versionName“'),请设置vers=%%i
对于/f“tokens=1,2 delims=。”%%i in(“!vers!”)do(
集decia=%%i
设置分贝=%%j
如果“!分贝!”lss“9”(
设置/a分贝+=1
)否则(
设置分贝=0
设置/a十进制+=1
)
设置newver=!分贝!!分贝!
)
对于('type”%inputfile%%“^ find/v/n”“^&break^>%inputfile%”中的/f“tokens=*”%%a,请执行以下操作(
设置“str=%%a”
调用集“str=%%str:**]=%%”
如果“!str:~0,15!”==”Ok,那么让我首先说批处理并不是处理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!
)
@echo关闭
延迟扩展
设置“inputfile=D:\raja\SIS\SIS\u Product\edTheSIS\AppIcons\Global\MenifestFile\AndroidManifest.xml”
对于/f令牌^=8^delims^=^“%%i in('type”%inputfile%%“^ | findstr”android:versionName“'),请设置vers=%%i
对于/f“tokens=1,2 delims=。”%%i in(“!vers!”)do(
集decia=%%i
设置分贝=%%j
如果“!分贝!”lss“9”(
设置/a分贝+=1
)否则(
设置分贝=0
设置/a十进制+=1
)
设置newver=!分贝!!分贝!
)
对于('type”%inputfile%%“^ find/v/n”“^&break^>%inputfile%”中的/f“tokens=*”%%a,请执行以下操作(
设置“str=%%a”
调用集“str=%%str:**]=%%”
如果“!str:~0,15!”==”是您的xml
文件的确切格式吗?格式似乎不正确。好的,您编辑了它,但我指的是间距前置文本。@GerhardBarnard-我不确定是否理解。但这次我尽了最大努力:)提供精确的xml文件。在PowerShell中,这可能要容易得多:您真的坚持使用cmd吗?您仍然可以运行命令从a开始,所以这不会影响您的工作流程。这是您的xml
文件的确切格式吗?格式似乎不正确。好的,您编辑了它,但我指的是间距前置文本。@GerhardBarnard-我不确定是否理解。但这次我尽了最大努力:)提供精确的xml文件。这在PowerShell中可能会容易得多:您真的坚持使用cmd吗?您仍然可以从运行命令,因此这不会影响您的工作流。谢谢您的回答。不行!清单文件的所有行都将替换为str代码>字符以及在cmd中获取错误消息。系统找不到指定的文件。为什么批处理文件依赖于xml文件的标记。您是否按原样复制了所有内容?您是否将它与其他脚本中的更多代码相结合?按原样,在另一个脚本中单独尝试。我修复了文件未找到的问题,您可以再试一次。@CGPA6.4:如果您的xml文件的格式(尤其是清单标记行)与您发布的格式不同,那么它将不起作用,并且会破坏您的文件。
@CGPA6.4您必须理解,我是根据您的确切示例构建的。如果您的xml不同,它将不起作用。我又更新了一次,请用更新的代码重试。。。您的新文件包含包
行,您在问题示例中从未显示过该行。我还根据您的屏幕截图示例更新了您的问题,以反映实际行。感谢您的回答。不行!清单文件的所有行都将替换为str代码>字符以及在cmd中获取错误消息。系统找不到指定的文件。为什么批处理文件依赖于xml文件的标记。您是否按原样复制了所有内容?您是否将它与其他脚本中的更多代码相结合?按原样,在另一个脚本中单独尝试。我修复了文件未找到的问题,您可以再试一次。@CGPA6.4:如果您的xml文件的格式(尤其是清单标记行)与您发布的格式不同,那么它将不起作用,并且会破坏您的文件。
@CGPA6.4您必须理解,我是根据您的确切示例构建的。如果您的xml不同,它将不起作用。我又更新了一次,请用更新的代码重试。。。您的新文件包含包
行,您在问题示例中从未显示该行。我还更新了您的问题以反映实际的l