[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[日期时间] 批处理BAT中怎样进行时间间隔的判断?

BAT内容如下:
  1. set XTHH=%time:~0,2%
  2. set XTMM=%time:~3,2%
  3. set JKSJ=%XTHH%%XTMM%
  4. if  %JKSJ% leq 0830 (
  5. echo 11111111111111
  6. ) else (
  7. if  %JKSJ% geq 1730 (
  8. echo 2222222222
  9. ) else (
  10. echo 333333333333333
  11. )
  12. )
复制代码
实现功能:JKSJ(0830<=JKSJ<=1730)时,输出333333,否则输出其它(111111或2222222222)。
               JKSJ小于等于0830时,输出111111111111,JKSJ大于等于1730时输出2222222222,否则输出3333333333

问题:监控时间为0510-0726时,显示的不对。。存在BUG。。。按理来说显示111111,现在却显示33333,是不是要经过什么特殊处理呢?请教各位前辈。。。

我重换了一个方法,可能也存在问题

@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

TOP

0开头的数字会被BAT认为是八进制的数字,前面加个1可以避免此问题。
Batcher 发表于 2014-3-3 15:56



    谢谢您,一下子就明白了。。。我后面重弄的那个方法,您看可以实现不?我简单测试了一下,还没有测到盲点,估计也存在BUG。。

TOP

返回列表