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可以避免此問題。
推薦閱讀:
- windows中dos批處理之命令特殊符號通配符與轉義符(推薦)
- 批處理echo、echo off、echo on、@、@echo off
- 解析批處理命令call和start
- Windows 批處理cmd/bat常用命令詳解
- BAT腳本實現自動IP地址切換