中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-09 05:18
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助][讨论]关于IF的疑惑 查看 799 回复 11
楼 主 [求助][讨论]关于IF的疑惑 发表于 2008-07-26 07:02 ·  中国 广西 钦州 电信
中级用户
★★
海浪人生
积分 206
发帖 103
注册 2007-07-04 00:18
19年会员
UID 93068
性别 男
状态 离线

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?
2 发表于 2008-07-26 07:03 ·  中国 广西 钦州 电信
中级用户
★★
海浪人生
积分 206
发帖 103
注册 2007-07-04 00:18
19年会员
UID 93068
性别 男
状态 离线
忘记了 不是说不能运行 而是说显示的不正确~
因为原来我是想要在一个时间段内才能运行某个程序的~
3 发表于 2008-07-26 07:53 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线

@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
4 发表于 2008-07-26 10:22 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@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 ]
5 发表于 2008-07-26 10:30 ·  中国 浙江 杭州 电信
初级用户
★★
积分 192
发帖 72
注册 2005-07-31 21:10
21年会员
UID 41234
状态 离线
IF "%b%" geq " 7"
好像在01时会出问题

好像 IF "%b%" geq "07"是可以的
6 发表于 2008-07-26 10:36 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@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
7 发表于 2008-07-26 10:41 ·  中国 浙江 杭州 电信
初级用户
★★
积分 192
发帖 72
注册 2005-07-31 21:10
21年会员
UID 41234
状态 离线
我错了,好像1-9是以空格开始的,不是0
8 发表于 2008-07-26 10:47 ·  中国 浙江 杭州 电信
初级用户
★★
积分 192
发帖 72
注册 2005-07-31 21:10
21年会员
UID 41234
状态 离线
这个行不行?

@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
9 发表于 2008-07-26 11:03 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
你在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
10 发表于 2008-07-26 11:07 ·  中国 浙江 杭州 电信
初级用户
★★
积分 192
发帖 72
注册 2005-07-31 21:10
21年会员
UID 41234
状态 离线
T_T...
好久没用time /t 了,我自己试都用的echo %time%
11 发表于 2008-07-26 23:08 ·  中国 广西 钦州 电信
中级用户
★★
海浪人生
积分 206
发帖 103
注册 2007-07-04 00:18
19年会员
UID 93068
性别 男
状态 离线
谢谢~
12 发表于 2008-07-27 07:51 ·  中国 广东 广州 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
19年会员
UID 82819
性别 男
状态 离线
汗了。原因是数字进制的原因

因为前面为0。

批处理判断为8进制。

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

若对数字格式化后,则可以避免该情况的出现。
知,不觉多。不知,乃求知
论坛跳转: