set /p syear=
set /p smouth=
set /p sday=
if %smouth%%sday% == 0301 (
set /a yyyy=syear%%4
if %yyyy% == 0 (
set lmouth=02 && set lday=29
) else (
set lmouth=02 && set lday=28
)
)
echo %lmouth% %lday%
分别测试20030301,20040301,
结果都是02 28
20040301的结果应该是02 29呀!!!
???
[ Last edited by xycoordinate on 2007-2-20 at 10:14 AM ]
对于这个问题
我希望我们可以写出更可靠的代码`
比如这样
cd\
echo off
cls
echo 输入一个整数
set /p a=
if %a% gtr 90 echo ^>90&goto end
if %a% gtr 80 echo ^>80&goto end
if %a% gtr 70 echo ^>70&goto end
:end
pause
[ Last edited by sadawn on 2007-3-27 at 03:16 PM ]
@echo off &setlocal enabledelayedexpansion
set /p syear=
set /p smouth=
set /p sday=
if "%smouth%%sday%"=="0301" (
set /a yyyy=syear%%4 if "!yyyy!"=="0" (
set lmouth=02 && set lday=29
) else (
set lmouth=02 && set lday=28
)
)
echo %lmouth% %lday%
pause
你的格式没问题,这里关系到bat的特殊性:
因为变量%yyyy%在同一if的括号语句里 所以要启用变量延迟,以捕捉动态变化,否则不能感知,会认为%yyyy%是空。看下面的例子,则可不用变量延迟扩展:
@echo off
set /p syear=
set /p smouth=
set /p sday=
if "%smouth%%sday%"=="0301" (
set /a yyyy=syear%%4 )
if "%yyyy%"=="0" (
set lmouth=02 && set lday=29
) else (
set lmouth=02 && set lday=28
)
echo %lmouth% %lday% &pause
---------我也是刚弄懂的^_^