中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] »
作者:
标题: 如何判断处于哪个时间段? 上一主题 | 下一主题
pykacha
初级用户





积分 156
发帖 73
注册 2008-5-9
状态 离线
『第 16 楼』:  

其实我最终的目的是要判断当前时间是学校上课的第几节课,在前辈的指导下我完成了代码,希望各位前辈看看还可不可以优化。
-----------------------------------------
set wt=不在时间段内
set t1=%time:~0,5%
if "%t1%" geq " 7:30" (
set wt=早读
)
if "%t1%" geq " 8:25" (
set wt=第一节
)
if "%t1%" geq " 9:15" (
set wt=第二节
)
if "%t1%" geq "10:05" (
set wt=第三节
)
if "%t1%" geq "10:55" (
set wt=第四节
)
if "%t1%" geq "13:30" (
set wt=午读
)
if "%t1%" geq "14:25" (
set wt=第五节
)
if "%t1%" geq "15:20" (
set wt=第六节
)
if "%t1%" geq "16:00" (
set wt=第七节
)
if "%t1%" geq "16:55" (
set wt=放学后
)
echo %wt%
--------------------------------------
谢谢大家。



为自己是中国人而倍感骄傲
2008-5-13 17:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pooronce
中级用户





积分 484
发帖 250
注册 2007-6-5
状态 离线
『第 17 楼』:  

另,实际上不带引号的话,空格就给忽略掉了,长度都不同了,还怎么比

2008-5-13 17:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pooronce
中级用户





积分 484
发帖 250
注册 2007-6-5
状态 离线
『第 18 楼』:  

re: pykacha
你那段代码,如果都是这样单命令的话,括号可以去掉全部放单行里
另,比较的数据建议不要用带冒号的格式,既然用到了中转变量,那么可以这样:
::截取出时和分连到一起
set time1=%time:~0,2%%time:~3,2%
::去除时间最前面可能存在的那个空格
set time1=%time1: =%

::下面再开始比较吧,全部直接用数字,如845,910,1000等


2008-5-13 18:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
knoppix7
银牌会员





积分 1287
发帖 634
注册 2007-5-2
来自 cmd.exe
状态 离线
『第 19 楼』:  

时*分然后/一个数.
::EXP(只是一种方法)
上课时间假设8:00,在是9:00,一节课40分钟
然后[(9*60+1分%%100)-(8*60+1分%%100)]/40+1,得2.说明是第二节.
这样可以很据结果来分析.不过第四节以后的检查就要加修正值了

而且不是特别准就是了

[ Last edited by knoppix7 on 2008-5-13 at 06:09 PM ]

2008-5-13 18:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 20 楼』:  

我说你们向复杂了还不信,只是有点疏忽,没带双引号。。。

Colstr函数在函数库里有,我就不写了:

@echo off
set "time= 9:05:45.99"
echo 假设当前时间为%time%
set/p=若在[8:45, 9:10]内显示<nul
call colstr a 0 "早" 0 1 0
set/p=  若大于9:10显示<nul
call colstr d 0 "迟" 0 1 1
echo ---------------------------------------

if "%time%" geq " 8:45" if "%time%" lss " 9:10" call colstr a 0 "早" 0 1 1
if "%time%" geq " 9:10" call colstr d 0 "迟" 0 1 1
pause


[ Last edited by plp626 on 2008-5-13 at 08:54 PM ]



山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2008-5-13 18:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pooronce
中级用户





积分 484
发帖 250
注册 2007-6-5
状态 离线
『第 21 楼』:  

呵呵,这样带上引号倒是靠谱了,想来1也应该比空格大。(还没试过这样比啊)

2008-5-13 18:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pykacha
初级用户





积分 156
发帖 73
注册 2008-5-9
状态 离线
『第 22 楼』:  

pooronce在18楼的提议很好,这样在编写代码时设置每节课时间时输入起来方便了不少,以后修改也方便.
19楼前辈的意见可以有助于我改进上午的时间判断,下午因为受眼保健操影响,就没什么规律了.

多谢了



为自己是中国人而倍感骄傲
2008-5-13 19:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 23 楼』:  16楼

尽量使用if...else...来代替if...

2008-5-13 19:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 24 楼』:  可以用for来精简下:


@echo off&setlocal enabledelayedexpansion
set "times=早读 第一节 第二节 第三节 第四节 午读 第五节 第六节 第七节 放学后"
set "hm=7:30 8:25 9:15 10:05 10:55 13:30 14:25 15:20 16:00 16:55"
set t=%time:~,2%%time:~3,2%
for %%i in (%hm%) do (
    set /a n+=1&set a=%%i&set a=!a:^:=!
    if %t% lss 730 (
       goto end
       ) else (
       if %t% equ !a! (
          goto echo
          ) else (
          if %t% lss !a! set /a n-=1&goto echo
       )
  
    )
)
:end
echo 不在时间段内
pause>nul&goto :eof
:echo
for /f "tokens=%n% delims= " %%i in ("%times%") do echo %%i
pause>nul
[ Last edited by zw19750516 on 2008-5-14 at 01:18 AM ]



批处理之家新域名:www.bathome.net
2008-5-14 00:11
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: