2025年3月19日 星期三 甲辰(龙)年 月十八 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > DOS/BAT与(脚本)

Bat批处理脚本案例--0开头字符串如何转成数字

时间:04-14来源:作者:点击数:78

0开头字符串直接进行表达式算术运算时,脚本会默认把0开头的字符串转换为8进制数值,如下:

  • rem a=22,021转成10进制为17,17+5=22
  • set /a num="021"+5
  • rem 会报错,028不是有效8进制。数字常数只能是十进制(17),十六位进制(0x11)或八进制(021)。
  • set /a num="028"+5

类似09,028等显然不是有效8进制数,为此0开头的字符串转成数值需要特殊处理,如何实现呢?

1、已知位数情况

比如日期:2020-09-12 00:00:00,需要获取月份进行一些运算:

1)可通过字符串截取得到 月份是9月:09, set mm=09

2)09 转换成数字,因为月份就2位,所以可以加10000然后对100求模,如下:

  • rem 10009%100得到9
  • set /a m=100%mm%%%100
2、位数不确定

比如:012987623、001233445怎么处理?

1)计算位数,知道了位数,就同已知位数情况:写个循环除10,次数累加即可获取位数

2)字符串去前置0,类似高级语言的ltrim,代码strzero.bat如下:

  • @echo off & setlocal enabledelayedexpansion
  • set str2="00987"
  • call :trimZero %str2%
  • rem 00=>0,00987=>987,0987=>987
  • echo %result%
  • goto :eof
  • :trimZero
  • set i=0
  • set strnum=%~1
  • :loop
  • if "!strnum:~%i%,1!" == "0" (
  • set /a i+=1
  • goto loop
  • )
  • set result=!strnum:~%i%!
  • if not defined result set result=0
  • goto :eof

代码说明:

本案例涉及函数定义、调用,变量延时读取等知识点,关于BAT批处理脚本开发基础指南,可以参考:windows bat 批处理脚本编写指南

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门