中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-08 00:13
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求个批处理,要求先检查系统时间(已解决) 查看 2,694 回复 19
楼 主 求个批处理,要求先检查系统时间(已解决) 发表于 2007-01-26 22:31 ·  中国 浙江 宁波 电信
新手上路
积分 14
发帖 6
注册 2007-01-26 21:59
19年会员
UID 77758
性别 男
状态 离线
求个批处理,要求先检查系统时间在8:00到18:00之间,然后运行下一步,否则跳出

[ Last edited by qqfx on 2007-1-26 at 10:47 AM ]
2 发表于 2007-01-26 22:46 ·  中国 四川 南充 营山县 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
SET /a a=%time:~0,2%*60+%time:~3,2%
if %a% geq 480 if %a% leq 1080 (goto 下一步)
GOTO :EOF
:下1步
..........
3 这样能满足你的要求吗? 发表于 2007-01-26 22:57 ·  中国 浙江 杭州 电信
初级用户
积分 116
发帖 28
注册 2007-01-03 05:21
19年会员
UID 75318
性别 男
状态 离线
@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 ]
4 发表于 2007-01-26 23:11 ·  中国 浙江 宁波 电信
新手上路
积分 14
发帖 6
注册 2007-01-26 21:59
19年会员
UID 77758
性别 男
状态 离线
先晕一下
5 发表于 2007-01-26 23:46 ·  中国 浙江 宁波 电信
新手上路
积分 14
发帖 6
注册 2007-01-26 21:59
19年会员
UID 77758
性别 男
状态 离线
简单试运行了一下,没问题,
SpikeKnox的我能读懂
斑斑的电脑能读懂
6 发表于 2007-01-27 01:06 ·  中国 北京 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
解释 2 楼 不得不爱 版主代码:




:: 『第 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 ]
本帖最近评分记录 (共 3 条) 点击查看详情
评分人分数时间
feiying001 +1 2007-02-15 10:43
htysm +1 2007-02-16 04:02
Eblis +2 2007-03-01 07:55
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
7 发表于 2007-01-27 02:55 ·  中国 浙江 宁波 电信
新手上路
积分 14
发帖 6
注册 2007-01-26 21:59
19年会员
UID 77758
性别 男
状态 离线
收藏!!!
8 发表于 2007-01-27 04:40 ·  中国 安徽 芜湖 电信
高级用户
★★★
积分 866
发帖 415
注册 2005-12-04 11:19
20年会员
UID 46459
状态 离线
解释的很牛。
9 发表于 2007-01-29 10:29 ·  中国 河北 保定 联通
初级用户
积分 22
发帖 10
注册 2006-12-30 03:50
19年会员
UID 74967
性别 男
状态 离线
收藏!!!
10 发表于 2007-02-08 22:58 ·  中国 吉林 四平 联通
高级用户
★★★
积分 859
发帖 413
注册 2006-08-14 21:55
19年会员
UID 60532
状态 离线
解释的详细透了
11 发表于 2007-02-13 11:24 ·  中国 山东 青岛 电信
新手上路
积分 14
发帖 7
注册 2007-02-13 10:11
19年会员
UID 79383
性别 男
状态 离线
太牛了
12 发表于 2007-02-13 14:26 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线
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步
..........

这样可以很直观的设置时间范围
13 发表于 2007-02-14 22:36 ·  中国 浙江 宁波 电信
新手上路
积分 14
发帖 6
注册 2007-01-26 21:59
19年会员
UID 77758
性别 男
状态 离线
偶现在可以把这个放到启动里,开机后自动上ADSL,计划里在加个断开的,我是包时段的8:00~18:00
14 发表于 2007-02-15 06:42 ·  中国 广东 珠海 电信
初级用户
积分 57
发帖 29
注册 2006-09-27 02:04
19年会员
UID 63754
状态 离线
非常感谢6楼的详细解释,又学到了一些.
15 发表于 2007-03-01 07:56 ·  中国 广东 广州 白云区 电信
中级用户
★★
积分 251
发帖 108
注册 2007-01-07 11:33
19年会员
UID 75721
性别 男
来自 湖南==>广州
状态 离线
非常好````
DOS新人.多多指導
论坛跳转: