标题: 求个批处理,要求先检查系统时间(已解决)
[打印本页]
作者: qqfx
时间: 2007-1-26 22:31
标题: 求个批处理,要求先检查系统时间(已解决)
求个批处理,要求先检查系统时间在8:00到18:00之间,然后运行下一步,否则跳出
[
Last edited by qqfx on 2007-1-26 at 10:47 AM ]
作者: 不得不爱
时间: 2007-1-26 22:46
SET /a a=%time:~0,2%*60+%time:~3,2%
if %a% geq 480 if %a% leq 1080 (goto 下一步)
GOTO :EOF
:下1步
..........
作者: SpikeKnox
时间: 2007-1-26 22:57
标题: 这样能满足你的要求吗?
@Echo OFF
Set /a thisTime=%Time:~0,2%
If %thisTime% LSS 8 Goto :End
If %thisTime% GTR 17 Goto :End
Echo Time is between 8:00-17:59
:: Run some code ...
Goto :EOF
:End
Echo Time is LSS then 8:00 or GTR then 17:59
[
Last edited by SpikeKnox on 2007-1-26 at 09:59 AM ]
作者: qqfx
时间: 2007-1-26 23:11
先晕一下
作者: qqfx
时间: 2007-1-26 23:46
简单试运行了一下,没问题,
SpikeKnox的我能读懂
斑斑的电脑能读懂
作者: redtek
时间: 2007-1-27 01:06
解释 2 楼 不得不爱 版主代码: Quote: |
:: 『第 2 楼』: 不得不爱 版主代码:
SET /a a=%time:~0,2%*60+%time:~3,2%
if %a% geq 480 if %a% leq 1080 (goto 下一步)
GOTO :EOF
:下1步
.......... |
|
上面代码(
红色标示)是取 %time% 环境变量中的
小时(采用截取字符串的方法取得的)
假如: %time% 所示时间为:11:15:33.01 (即:11点15分),则 %time:~0,2% 就是取 %time% 变量中
从偏移量0开始处取两个字符。取到的就是
小时。
%time:~0,2%*60,把取到的小时再乘以60(分钟),因为一小时是60分钟,所以通过字符串截取功能取到的小时数要换算成总的分钟数,所以要再乘以60。因为将小时换算成分钟是为了方便比对某个时间的范围。
+%time:~3,2%,当取到小时并且让小时乘以60而换算成分钟还不行,因为还要得到 %time% 变量中的
分钟数,所以 %time:~3,2% (假如%time%时间为: 11:
15:33.01)那么就是从偏移量3开始(偏移量从0开始计算)取两个字符,这两个字符就是上面(蓝色标示)“15”。
因为小时数已换算成分钟了,再加上%time%里的分钟数,这样求出的当前时间的总分钟数才更准确。
换算得到总的分钟数就可以更方便简单的使用 IF 来计算(并且还可以进行加减计算等特殊时间或是以这种原理的对日期的范围操作……)。
leq 1080 (上面代码绿色标示),这里的 LEQ 是小于或等于的含义,它的帮助信息使用 IF /? 命令可以看到:
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
上面代码含义是指:小于或等于 1080 分钟(18点:就是从0点到晚上6点共有18个小时*每小时60分钟,就是1080分钟)
然后以分钟做为对比的基础单位:
IF 当前时间大于或等于480分钟(即480/60=8小时,就是上午8点) 并且 当前时间小于或等于1080分钟(1080/60=18小时,就是晚18点),只要时间的范围在这之间,这就是楼主要求的:当前时间如果在早8点——晚18点之间,就执行某个命令……
(截取字符串知识点: SET /? 的帮助信息中有)
(%time%的知识点: SET /? 的帮助信息的最后面有关于可以“调用”的动态环境变量)
(判断大小与判断的知识点: IF /? 的帮助信息中)
(Goto的知识点: GOTO /? 的帮助信息中)
对于日期也可以使用类似的全转成数值的方法来判定某个文件的时间属性:属于在某个日期到某个日期的范围之内等特殊应用。
[
Last edited by redtek on 2007-1-26 at 12:10 PM ]
作者: qqfx
时间: 2007-1-27 02:55
收藏!!!
作者: htysm
时间: 2007-1-27 04:40
解释的很牛。
作者: sweiwei
时间: 2007-1-29 10:29
收藏!!!
作者: anqing
时间: 2007-2-8 22:58
解释的详细透了
作者: jianren256
时间: 2007-2-13 11:24
太牛了
作者: zh159
时间: 2007-2-13 14:26
Quote: |
Originally posted by 不得不爱 at 2007-1-26 09:46:
SET /a a=%time:~0,2%*60+%time:~3,2%
if %a% geq 480 if %a% leq 1080 (goto 下一步)
GOTO :EOF
:下1步
.......... |
|
改一下:
set /a a=%time:~0,2%%time:~3,2%
if %a% geq 800 if %a% leq 1800 (goto 下一步)
goto :eof
:下1步
..........
这样可以很直观的设置时间范围
作者: qqfx
时间: 2007-2-14 22:36
偶现在可以把这个放到启动里,开机后自动上ADSL,计划里在加个断开的,我是包时段的8:00~18:00
作者: blue812
时间: 2007-2-15 06:42
非常感谢6楼的详细解释,又学到了一些.
作者: Eblis
时间: 2007-3-1 07:56
非常好````
作者: scriptor
时间: 2007-9-15 20:10
Quote: |
Originally posted by zh159 at 2007-2-13 14:26:
改一下:
set /a a=%time:~0,2%%time:~3,2%
if %a% geq 800 if %a% leq 1800 (goto 下一步)
goto :eof
:下1步
.......... 这样可以很直观的设置时间范围 |
|
恩,这个才是不错的
我就一直在使用这个格式做时间的运算
作者: sswxfj
时间: 2007-9-22 11:10
多谢6楼的同志让我知道了 %path%~10,5%还有后面的。。。
作者: sswxfj
时间: 2007-9-22 11:31
set /a a=%time:~0,2%%time:~3,2%
这个是什么意思啊?
作者: piliwang
时间: 2007-9-27 01:02
NB
不错,值得学习!
作者: bridgeforest
时间: 2007-9-30 10:32
NX。。。。。