标题: [日期时间] 批处理BAT中怎样进行时间间隔的判断? [打印本页]
作者: strolley 时间: 2014-3-3 14:14 标题: 批处理BAT中怎样进行时间间隔的判断?
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,是不是要经过什么特殊处理呢?请教各位前辈。。。
作者: Batcher 时间: 2014-3-3 14:20
- @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
复制代码
作者: strolley 时间: 2014-3-3 14:20
我重换了一个方法,可能也存在问题
@echo off
setlocal enabledelayedexpansion
set XTHH=%time:~0,2%
set XTMM=%time:~3,2%
set JKSJ=%XTHH%%XTMM%
set /a var1=510
set /a var2=1050
echo %XTHH%
set /a aa= %XTHH% * 60
echo %aa%
echo %XTMM%
set /a cc=%aa% + %XTMM%
echo %cc%
if %cc% leq %var1% (
echo 11111111111111
) else (
if %cc% geq %var2% (
echo 2222222222
) else (
echo 333333333333333
)
)
pause
作者: Batcher 时间: 2014-3-3 15:56
0开头的数字会被BAT认为是八进制的数字,前面加个1可以避免此问题。
作者: strolley 时间: 2014-3-3 16:00
0开头的数字会被BAT认为是八进制的数字,前面加个1可以避免此问题。
Batcher 发表于 2014-3-3 15:56
谢谢您,一下子就明白了。。。我后面重弄的那个方法,您看可以实现不?我简单测试了一下,还没有测到盲点,估计也存在BUG。。
作者: Batcher 时间: 2014-3-3 17:18
回复 5# strolley
不管可以还是不可以,都不建议使用。
一个月之后可能连你自己都记不清这个代码是什么意思了。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |