bat截取日期、時間之後進行 set /a 計算時08和09會被看做非法八進制數字

批處理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可以避免此問題。

推薦閱讀: