Board logo

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

作者: xycoordinate     时间: 2007-2-22 10:35    标题: 求助:命令if......

test.bat

  Quote:
@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


  Quote:
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千言万语......

佩服呀!