Batch file 如何获取小数点后的值

Batch file 如何获取小数点后的值,batch-file,Batch File,我正在传递12345678.02,我想得到小数点后的值,即“02”,然后我有另一个文本文件要替换该值 <add key="BuildVersion" value="12345678.01" /> 如果分数部分始终有两位数,则更容易: 只需删除小数点 递增一倍 重新插入小数点 插入回音线以显示发生了什么,可以删除 样本运行: > SO_45668510.cmd Version number 12345678.01 pass=12345678.01 pass=123456

我正在传递12345678.02,我想得到小数点后的值,即“02”,然后我有另一个文本文件要替换该值

 <add key="BuildVersion" value="12345678.01" /> 

如果分数部分始终有两位数,则更容易:

  • 只需删除小数点
  • 递增一倍
  • 重新插入小数点

  • 插入回音线以显示发生了什么,可以删除

    样本运行:

    >  SO_45668510.cmd
    Version number 12345678.01
    pass=12345678.01
    pass=1234567802
    pass=12345678.02
    

    如果分数部分始终有两位数,则更容易:

  • 只需删除小数点
  • 递增一倍
  • 重新插入小数点

  • 插入回音线以显示发生了什么,可以删除

    样本运行:

    >  SO_45668510.cmd
    Version number 12345678.01
    pass=12345678.01
    pass=1234567802
    pass=12345678.02
    

    批处理只有变量类型字符串(有时转换为有符号32位整数)。没有浮动。同时,带前导zeores的数字也被解释为八进制。如果加上一百,将如何实现四舍五入?我不清楚你想做什么。@LotPings我得到了解决方案set/p pass=“%pass%”set“number\u to\u round=%pass%”for/f“tokens=1,2 delims=。“%%a in(“%number\u to\u round%”)do(set first\u part=%%a set second\u part=%%b)set second\u part=%second\u part:~0,2%echo%second\u part%如果定义了second\u part如果第二部分为%GEQ 5(set/a rounded=%first\u part%+1)否则(set/a rounded=%first\u part%)不在注释中发布代码,如果这与您的问题不同。批处理的可能副本只有变量类型字符串(有时转换为有符号32位整数)。没有浮点数。同时,带前导zeores的数字也被解释为八进制。加上一百如何执行舍入?我不清楚你想做什么。@LotPings我得到了解决方案集/p pass=“%pass%”set“number_to_round=%pass%”for/f“tokens=1,2 delims=。“%a in”(“%number_to_round%”)do(设置第一部分=%%a设置第二部分=%%b)设置第二部分=%s第二部分:~0,2%echo%s第二部分%s如果定义了第二部分如果%s第二部分%GEQ 5(设置/a舍入=%s第一部分%+1)否则(设置/a舍入=%s第一部分%)不在注释中发布代码,如果这与您的问题不同。可能重复
    @Echo off
    set/p "pass=Version number %pass%"
    If "%pass:~-3,1%" neq "." (Echo Invalid version number %pass% &Pause&Goto :Eof)
    Echo pass=%pass%
    Set /A pass=%pass:.=% + 1
    Echo pass=%pass%
    Set "pass=%pass:~0,-2%.%pass:~-2%"
    Echo pass=%pass%
    
    echo %pass%>newVersion.txt
    
    >  SO_45668510.cmd
    Version number 12345678.01
    pass=12345678.01
    pass=1234567802
    pass=12345678.02