Board logo

标题: 求助:命令if...... [打印本页]

作者: xycoordinate     时间: 2007-2-22 10:35    标题: 求助:命令if......
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 ]

作者: slore     时间: 2007-2-22 11:40
这个可能根格式有关吧~

2100年呢?呵呵虽然能被4整除但是是28天哦。

作者: qasa     时间: 2007-2-23 03:45
其中的格式已经不对了,因为你已经用了延迟变量,应如下:
@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 ]

作者: anqing     时间: 2007-2-23 03:57
学习了,昨天,我看了此帖,找不出毛病!

作者: xycoordinate     时间: 2007-2-23 09:00
谢谢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 ]

作者: qasa     时间: 2007-2-23 09:46
  if "!yyyy!" == "0" (set lday=29) else (set lday =28)


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


  if "!yyyy!" == "0" (set lday=29) else (set lday=28)

作者: xycoordinate     时间: 2007-2-23 10:54
Originally posted by qasa at 2007-2-22 08:46 PM:
  if "!yyyy!" == "0" (set lday=29) else (set lday =28)


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

<img src="images/smilies/face-sad.png" align="absmiddle" border="0">

郁闷死了!!!!

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

佩服呀!