文章摘要
文章介绍了在批处理 BAT 中通过设置变量和 if 语句来判断当前时间的间隔,并输出相应信息。文章内容如下:
1. 设置变量 `XTHH` 和 `XTMM` 分别提取小时和分钟:
```
set XTHH=%time:~0,2%
set XTMM=%time:~3,2%
```
2. 组合 `XTHH` 和 `XTMM` 形成 `JKSJ`:
```
set JKSJ=%XTHH%%XTMM%
```
3. 根据 `JKSJ` 的值输出不同的信息:
```
if %JKSJ% leq 0830 (
echo 11111111111111
) else (
if %JKSJ% geq 1730 (
echo 2222222222
) else (
echo 333333333333333
)
)
```
4. 说明:由于 BAT 中的数字默认为十进制,文章提到在 if 语句中加 `1%` 可以避免八进制解读问题,例如:
```
if 1%JKSJ% leq 10830 (
```
文章最后提到,当监控时间为 `0510-0726` 时,显示结果不符合预期(显示333333,应为111111),并询问是否需要特殊处理。
总结:文章通过设置变量和 if 语句实现时间间隔判断,并解决了八进制解读的问题,但监控时间显示异常可能需要进一步验证或调整逻辑。
批处理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
)
)
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,是不是要经过什么特殊处理呢?请教各位前辈。。。
@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
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可以避免此问题。
© 版权声明
文章版权归作者所有,未经允许请勿转载。