中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-03 11:51
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助:命令if...... 查看 849 回复 6
楼 主 求助:命令if...... 发表于 2007-02-22 10:35 ·  中国 安徽 马鞍山 电信
中级用户
★★
积分 493
发帖 228
注册 2007-02-16 00:38
19年会员
UID 79596
性别 男
来自 安徽
状态 离线
test.bat

@echo off
setlocal ENABLEDELAYEDEXPANSION
set syear=2008
set smouth=02
if %smouth% == 02 (
set /a yyyy=syear%%4
if %yyyy% == 0 (set lday=29) else (set lday =28)
)
echo %lday%


CMD下执行
>test.bat
此时不应有 (set。

?????????

笔误:将lday写成了ldate了!!!

[ Last edited by xycoordinate on 2007-2-22 at 07:55 PM ]
2 发表于 2007-02-22 11:40 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
这个可能根格式有关吧~

2100年呢?呵呵虽然能被4整除但是是28天哦。
3 发表于 2007-02-23 03:45 ·  中国 广东 湛江 电信
高级用户
★★★
积分 959
发帖 311
注册 2006-04-11 14:08
20年会员
UID 53665
性别 男
来自 广东-LianJiang
状态 离线
其中的格式已经不对了,因为你已经用了延迟变量,应如下:
@echo off
setlocal ENABLEDELAYEDEXPANSION
set syear=2008
set smouth=02
if "!smouth!" == "02" (
set /a yyyy=!syear!%%4
if "!yyyy!" == "0" (set lday=29) else (set ldate=28)
)
echo !lday! !ldate!


我改了一点点,这样28天才可以显示正常。

[ Last edited by qasa on 2007-2-23 at 09:47 AM ]
κχυμγνξοθπρωψιαδλεηφβτζσ┬╀┾┳┞┯┰┱┣┲┳╂╁│├┟┭┠这是什么??这就是我的人生
4 发表于 2007-02-23 03:57 ·  中国 吉林 四平 联通
高级用户
★★★
积分 859
发帖 413
注册 2006-08-14 21:55
19年会员
UID 60532
状态 离线
学习了,昨天,我看了此帖,找不出毛病!
5 发表于 2007-02-23 09:00 ·  中国 安徽 马鞍山 电信
中级用户
★★
积分 493
发帖 228
注册 2007-02-16 00:38
19年会员
UID 79596
性别 男
来自 安徽
状态 离线
谢谢qasa

test.bat
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set syear=2007
set smouth=02
if "!smouth!" == "02" (
set /a yyyy=!syear!%%4
if "!yyyy!" == "0" (set lday=29) else (set lday =28)
)
echo !lday!

CMD下执行test.bat,报错:
ECHO 处于关闭状态。

??????

我写这个P,是为了区别闰年与平年的,大家有什么好方法吗?????????

[ Last edited by xycoordinate on 2007-2-22 at 08:03 PM ]
6 发表于 2007-02-23 09:46 ·  中国 广东 湛江 电信
高级用户
★★★
积分 959
发帖 311
注册 2006-04-11 14:08
20年会员
UID 53665
性别 男
来自 广东-LianJiang
状态 离线
  if "!yyyy!" == "0" (set lday=29) else (set lday =28)


唉,这是你的粗心大意造成的结果,你后面 lday =28,变量后面多了一个空格。
把空格去掉就可以了。


  if "!yyyy!" == "0" (set lday=29) else (set lday=28)
κχυμγνξοθπρωψιαδλεηφβτζσ┬╀┾┳┞┯┰┱┣┲┳╂╁│├┟┭┠这是什么??这就是我的人生
7 发表于 2007-02-23 10:54 ·  中国 安徽 马鞍山 电信
中级用户
★★
积分 493
发帖 228
注册 2007-02-16 00:38
19年会员
UID 79596
性别 男
来自 安徽
状态 离线
Originally posted by qasa at 2007-2-22 08:46 PM:
  if "!yyyy!" == "0" (set lday=29) else (set lday =28)


唉,这是你的粗心大意造成的结果,你后面 lday =28,变量后面多了一个 ...



郁闷死了!!!!

qasa,DJ千言万语......

佩服呀!
论坛跳转: