如何在批处理中比较时间?请教。

比如用关系表达式比较当前时间是否已经达到指定时间,如果是,执行某个命令,但问题是时间不是普通数值数据

不想直接给你写代码,你提问里也没说是日期的还是时分秒等的,或全要的。
只要时间格式处理成一致,就可以直接用if 命令比较大小(大于gtr小于lss等)如果格式不一致,则需要用变量处理的一些方法使它们统一格式,如果对此处理有困难,可以看if/?的帮助信息,也可以看看我空间一篇对变量处置的文章,还可以在线时Hi交流。
提示:命令中,set/a 里用的数据被认为是数值型的,而一般set命令里的则认为是字符型的,在if命令后面带的变量中,不加引号认为是数值,加引号则认为是字符型的。比如
if "2" gtr "10" @echo 前者大于后者
你会发现它居然显示出来了, 原因是它是先拿2和1比较,相等才再取下一位比较,如果把引号去掉就不会显示了
可以把时间换成纯数字式的,那需要注意一点的是如数字是以0开头的会被当成8进制数导致错误;还可以把代表时间的变量位数和格式统一后把它当字符(把变量加引号)处理,推荐这种方法,可以不用处理如-:类的非数字符号只要统一格式就行(该两位的而不足10,前添0或前有一个也不会有多的空格也行因为空格这个字符被认为比0这个字符小)。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-29
用vbs
调用times子函数
function times(x,y)
if x="1" then times=date else x=null
if y="1" then times=time else y=null
if x="1" and y="1" then times= date & space(1) & time
end function
if hour(times(0,1)) >= "18" then msgbox "yes" else msgbox "no"
'判断当前时间是否是18点.如果是显示yes,如果不是则显示"no"
'你可以调用times(x,y) x和y值的 分别为日期,时间(x,y).如果2个都为1,就都显示.
'如 msgbox times(1,1)
'你可以这样判断时间if hour(times(0,1))来判断小时
第2个回答  2010-12-29
C:\Users\Administrator\Desktop>echo %time%
17:29:02.65

C:\Users\Administrator\Desktop>if %time% geq 17:29:00.00 echo yes
yes

C:\Users\Administrator\Desktop>if %time% leq 17:29:00.00 echo yes

C:\Users\Administrator\Desktop>

不知你看得懂不,详情请查阅if /?

这里也即字符串之间也是可以用gtr,equ,lss,neq,geq,leq这样像数字一样进行比较,比

较时会按ASCII码来进行逐位比较....
第3个回答  2010-12-29
@echo off
::时间自己设置测试运行玩玩,时间设为当前时间下一分钟,格式用“20:03”
if "%time:~0,5%"=="20:03" title 时间到&&echo 时间到了&&pause
echo 时间还没到.....
ping -n 2 127.1>nul
call %0
相似回答