中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [求助][讨论]关于IF的疑惑 上一主题 | 下一主题
p1509101
中级用户

海浪人生


积分 206
发帖 103
注册 2007-7-4
状态 离线
『楼 主』:  [求助][讨论]关于IF的疑惑


for /f %%t in ('time /t') do set n=%%t
set b=%n:~0,2%
if %b% leq 22 (IF %b% geq 7 (echo 大于或者等于7点) else (echo 还没有到7点)) else (echo 超过晚上10点啦)
pause>nul
这样比较的话
为什么7点的时候可以运行 8 9点不能运行 超过10点又能运行了。。。
GEQ 要是不会分辨07的话 为什么7点的时候能运行?也就是说能判断出07=7
要是能分辨07的话 为什么08就不能判断大于7?

2008-7-26 07:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
p1509101
中级用户

海浪人生


积分 206
发帖 103
注册 2007-7-4
状态 离线
『第 2 楼』:  

忘记了 不是说不能运行 而是说显示的不正确~
因为原来我是想要在一个时间段内才能运行某个程序的~

2008-7-26 07:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 3 楼』:  


@echo off
for /f %%t in ('time /t') do set n=%%t
set /a n=100%n:~,2%%%100
if %n% leq 22 (if %n% geq 7 (echo 大于或者等于7点) else (echo 还没有到7点)) else (echo 超过晚上10点啦)
pause>nul




批处理之家新域名:www.bathome.net
2008-7-26 07:53
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
HAT
版主





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


@echo off
for /f %%t in ('time /t') do set n=%%t
set b=%n:~0,2%
if "%b%" leq "22" (IF "%b%" geq " 7" (echo 大于或者等于7点) else (echo 还没有到7点)) else (echo 超过晚上10点啦)
pause>nul
这个是错误的,原因见5楼,更正见6楼。

[ Last edited by HAT on 2008-7-26 at 10:37 AM ]



2008-7-26 10:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
obsolete
初级用户





积分 192
发帖 72
注册 2005-7-31
状态 离线
『第 5 楼』:  

IF "%b%" geq " 7"
好像在01时会出问题

好像 IF "%b%" geq "07"是可以的

2008-7-26 10:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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


@echo off
set b=%time:~0,2%
if "%b%" leq "22" (IF "%b%" geq " 7" (echo 大于或者等于7点) else (echo 还没有到7点)) else (echo 超过晚上10点啦)
pause>nul




2008-7-26 10:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复
obsolete
初级用户





积分 192
发帖 72
注册 2005-7-31
状态 离线
『第 7 楼』:  

我错了,好像1-9是以空格开始的,不是0

2008-7-26 10:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
obsolete
初级用户





积分 192
发帖 72
注册 2005-7-31
状态 离线
『第 8 楼』:  

这个行不行?
@echo off
set /a b=%time:~0,2%
if %b% lss 22 (IF %b% geq 7 (echo 大于或者等于7点) else (echo 还没有到7点)) else (echo 超过晚上10点啦)
pause>nul


2008-7-26 10:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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

你在5楼的想法是正确的,time /t会补0
@echo off
for /f %%t in ('time /t') do set n=%%t
set b=%n:~0,2%
if "%b%" leq "22" (IF "%b%" geq "07" (echo 大于或者等于7点) else (echo 还没有到7点)) else (echo 超过晚上10点啦)
pause>nul




2008-7-26 11:03
查看资料  发短消息 网志   编辑帖子  回复  引用回复
obsolete
初级用户





积分 192
发帖 72
注册 2005-7-31
状态 离线
『第 10 楼』:  

T_T...
好久没用time /t 了,我自己试都用的echo %time%

2008-7-26 11:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
p1509101
中级用户

海浪人生


积分 206
发帖 103
注册 2007-7-4
状态 离线
『第 11 楼』:  

谢谢~

2008-7-26 23:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 12 楼』:  

汗了。原因是数字进制的原因

因为前面为0。

批处理判断为8进制。

所以就出现了。8,9不可以访问的情况。

若对数字格式化后,则可以避免该情况的出现。



知,不觉多。不知,乃求知
2008-7-27 07:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: