Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 使用批处理脚本将浮点变量的值增加1_Batch File - Fatal编程技术网

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
variable
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>

好的,首先让我说批处理不是处理
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