bat截取日期、时间之后进行 set /a 计算时08和09会被看做非法八进制数字
程序员文章站
2022-03-09 08:39:24
批处理bat中怎样进行时间间隔的判断?set xthh=%time:~0,2%set xtmm=%time:~3,2%set jksj=%xthh%%xtmm%if %jksj% leq 0830...
批处理bat中怎样进行时间间隔的判断?
set xthh=%time:~0,2% set xtmm=%time:~3,2% set jksj=%xthh%%xtmm% if %jksj% leq 0830 ( echo 11111111111111 ) else ( if %jksj% geq 1730 ( echo 2222222222 ) else ( echo 333333333333333 ) )
实现功能:jksj(0830<=jksj<=1730)时,输出333333,否则输出其它(111111或2222222222)。
jksj小于等于0830时,输出111111111111,jksj大于等于1730时输出2222222222,否则输出3333333333
问题:监控时间为0510-0726时,显示的不对。。存在bug。。。按理来说显示111111,现在却显示33333,是不是要经过什么特殊处理呢?请教各位前辈。。。
下面就是针对08和09会被看做非法八进制数字的解决方法
@echo off set xthh=%time:~0,2% set xtmm=%time:~3,2% set jksj=%xthh%%xtmm% if 1%jksj% leq 10830 ( echo 11111111111111 ) else ( if 1%jksj% geq 11730 ( echo 2222222222 ) else ( echo 333333333333333 ) ) pause
说明
0开头的数字会被bat认为是八进制的数字,前面加个1可以避免此问题。