中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求个批处理,要求先检查系统时间(已解决)
« [1] [2] »
作者:
标题: 求个批处理,要求先检查系统时间(已解决) 上一主题 | 下一主题
qqfx
新手上路





积分 14
发帖 6
注册 2007-1-26
状态 离线
『楼 主』:  求个批处理,要求先检查系统时间(已解决)

求个批处理,要求先检查系统时间在8:00到18:00之间,然后运行下一步,否则跳出

[ Last edited by qqfx on 2007-1-26 at 10:47 AM ]

2007-1-26 22:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复
不得不爱
超级版主

我爱DOS


积分 5310
发帖 2044
注册 2005-9-26
来自 四川南充
状态 离线
『第 2 楼』:  

SET /a a=%time:~0,2%*60+%time:~3,2%
if %a% geq 480 if %a% leq 1080 (goto 下一步)
GOTO :EOF
:下1步
..........



我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛  
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件
2007-1-26 22:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
SpikeKnox
初级用户




积分 116
发帖 28
注册 2007-1-3
状态 离线
『第 3 楼』:  这样能满足你的要求吗?

@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 ]

2007-1-26 22:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qqfx
新手上路





积分 14
发帖 6
注册 2007-1-26
状态 离线
『第 4 楼』:  

先晕一下

2007-1-26 23:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qqfx
新手上路





积分 14
发帖 6
注册 2007-1-26
状态 离线
『第 5 楼』:  

简单试运行了一下,没问题,
SpikeKnox的我能读懂
斑斑的电脑能读懂

2007-1-26 23:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 6 楼』:  

解释 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 ]

   此帖被 +4 点积分        点击查看详情   
评分人:【 feiying001 分数: +1  时间:2007-2-15 10:43
评分人:【 htysm 分数: +1  时间:2007-2-16 04:02
评分人:【 Eblis 分数: +2  时间:2007-3-1 07:55




    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2007-1-27 01:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qqfx
新手上路





积分 14
发帖 6
注册 2007-1-26
状态 离线
『第 7 楼』:  

收藏!!!

2007-1-27 02:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
htysm
高级用户




积分 866
发帖 415
注册 2005-12-4
状态 离线
『第 8 楼』:  

解释的很牛。

2007-1-27 04:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
sweiwei
初级用户





积分 22
发帖 10
注册 2006-12-30
状态 离线
『第 9 楼』:  

收藏!!!

2007-1-29 10:29
查看资料  发短消息 网志   编辑帖子  回复  引用回复
anqing
高级用户




积分 859
发帖 413
注册 2006-8-14
状态 离线
『第 10 楼』:  

解释的详细透了

2007-2-8 22:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jianren256
新手上路





积分 14
发帖 7
注册 2007-2-13
状态 离线
『第 11 楼』:  

太牛了

2007-2-13 11:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 12 楼』:  



  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步
..........
这样可以很直观的设置时间范围

2007-2-13 14:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qqfx
新手上路





积分 14
发帖 6
注册 2007-1-26
状态 离线
『第 13 楼』:  

偶现在可以把这个放到启动里,开机后自动上ADSL,计划里在加个断开的,我是包时段的8:00~18:00

2007-2-14 22:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复
blue812
初级用户





积分 57
发帖 29
注册 2006-9-27
状态 离线
『第 14 楼』:  

非常感谢6楼的详细解释,又学到了一些.

2007-2-15 06:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Eblis
中级用户




积分 251
发帖 108
注册 2007-1-7
来自 湖南==>广州
状态 离线
『第 15 楼』:  

非常好````



DOS新人.多多指導
2007-3-1 07:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: