中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-04 22:00
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何判断处于哪个时间段? 查看 1,791 回复 23
楼 主 如何判断处于哪个时间段? 发表于 2008-05-13 09:51 ·  中国 广东 广州 番禺区 电信
初级用户
★★
积分 156
发帖 73
注册 2008-05-09 10:40
18年会员
UID 118210
性别 男
状态 离线
我想实现下面功能
如果当前时间处于上午8:45到9:10之间,则设置wt为“早”,如果是9:10到10:00之间,则设置wt为“迟”。
请问要如何编写?
为自己是中国人而倍感骄傲
2 发表于 2008-05-13 10:23 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
if/?


if %time%大于 8:45 if %time% 小于 9:10 (set wt=早) else set wt 迟
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
3 发表于 2008-05-13 11:01 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@echo off
set wt=
if "%time:~0,5%" geq " 8:45" (
if "%time:~0,5%" lss " 9:10" (
set wt=早
) else if "%time:~0,5%" geq " 9:10" (
if "%time:~0,5%" lss "10:00" (
set wt=迟
)
)
)
echo %wt%
4 发表于 2008-05-13 11:52 ·  中国 江苏 苏州 吴江区 电信
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
18年会员
UID 99089
性别 男
状态 离线
8:45这样的结构能够用于if的判断大小吗??
5 发表于 2008-05-13 12:01 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
Originally posted by huahua0919 at 2008-5-13 11:52 AM:
8:45这样的结构能够用于if的判断大小吗??

你能给出一个不能的例子吗??
6 发表于 2008-05-13 12:05 ·  中国 江苏 苏州 吴江区 电信
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
18年会员
UID 99089
性别 男
状态 离线
执行你的程序说 echo 处于关闭状态
7 发表于 2008-05-13 12:41 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
Originally posted by huahua0919 at 2008-5-13 12:05 PM:
执行你的程序说 echo 处于关闭状态

正常吧,仔细看看楼主的要求,对于不在那个两个时间段的情况没做要求。
8 发表于 2008-05-13 13:19 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线

@echo off
set t=%time:~0,5%
for /f "tokens=1,2 delims=:." %%a in ("%t%") do (
set /a s=100%%a%%100*60,f=100%%b%%100+s
)
set /a w=1/(f/525),1/(550/f)2>nul&&set var=早
set /a w=1/(f/551),1/(600/f)2>nul&&set var=迟
if defined var (echo %t% %var%) else echo %t% 不在指定时间段。
pause


[ Last edited by 26933062 on 2008-5-13 at 01:20 PM ]
致精致简!
9 发表于 2008-05-13 13:26 ·  中国 上海 浦东新区 电信
中级用户
★★
积分 484
发帖 250
注册 2007-06-05 23:33
19年会员
UID 90372
性别 男
状态 离线

if %time:~0,2%%time:~3,2% geq 845 (
if %time:~0,2%%time:~3,2% leq 910 (
set "wt=早"
) else if %time:~0,2%%time:~3,2% gtr 910 (
if %time:~0,2%%time:~3,2% leq 1000 (
set "wt=迟"
) else (
set "wt=太迟"
)
)
) else set "wt=太早"

echo %wt%
10 发表于 2008-05-13 14:24 ·  中国 广西 南宁 电信
中级用户
★★
丶杏灬丶
积分 280
发帖 105
注册 2008-05-06 03:37
18年会员
UID 117858
性别 男
来自 广西
状态 离线
@echo off&setlocal ENABLEDELAYEDEXPANSION
set wt=
if "!time:~0,5!" geq " 8:45" (
if "!time:~0,5!" lss " 9:10" (
set wt=早
) else if "!time:~0,5!" geq " 9:10" (
if "!time:~0,5!" lss "10:10" (
set wt=迟
)
)
)
echo.!wt!
"else set wt=不在时间段内"这一段可以避免提示"ECHO处于关闭状态"而直接提示现在不是所在条件时间段内~

[ Last edited by joyn on 2008-5-13 at 02:27 PM ]
11 发表于 2008-05-13 15:27 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
大家,想复杂了。
粘贴到命令行:
if %time% geq 08:45 if %time% lss 09:10 (echo 早) else if %time% geq 09:10 echo 迟
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
12 发表于 2008-05-13 15:53 ·  中国 上海 浦东新区 电信
中级用户
★★
积分 484
发帖 250
注册 2007-06-05 23:33
19年会员
UID 90372
性别 男
状态 离线
Originally posted by plp626 at 2008-5-13 03:27 PM:
大家,想复杂了。
粘贴到命令行:
if %time% geq 08:45 if %time% lss 09:10 (echo 早) else if %time% geq 09:10 echo 迟


%time%在10点前是不显示前置0的
另外你这个在时间段之外都是迟了好像
13 发表于 2008-05-13 16:22 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
RE:pooronce
和那个没关系,
当前时间大于9:10才显示迟,你把9:10改小些再测试测试。。。

if %time% geq 08:45 if %time% lss 09:10 echo 早
if %time% geq 09:10 echo 迟


[ Last edited by plp626 on 2008-5-13 at 04:37 PM ]
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
14 发表于 2008-05-13 17:52 ·  中国 广东 广州 番禺区 电信
初级用户
★★
积分 156
发帖 73
注册 2008-05-09 10:40
18年会员
UID 118210
性别 男
状态 离线
想不到短短时间内前辈们为我提供了那么多种方法,每种方法我都学习尝试了。
谢谢大家了!
为自己是中国人而倍感骄傲
15 发表于 2008-05-13 17:57 ·  中国 上海 电信
中级用户
★★
积分 484
发帖 250
注册 2007-06-05 23:33
19年会员
UID 90372
性别 男
状态 离线
Originally posted by plp626 at 2008-5-13 04:22 PM:
RE:pooronce
和那个没关系,
当前时间大于9:10才显示迟,你把9:10改小些再测试测试。。。

if %time% geq 08:45 if %time% lss 09:10 echo 早
if ...


你上面那段代码,自己试过没?
我改成8点10分都是迟的

有关系的,带0的就是8进制了,甚至会命令出错不能比了。或者呢字符串比就是空格跟0比了,能一样么
论坛跳转: