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