@echo off&setlocal enabledelayedexpansion
set msn= 31 28 31 30 31 30 31 31 30 31 30 31
set ms0= 31 29 31 30 31 30 31 31 30 31 30 31
:lp
set /p gd=输入开始日期(yyyy-mm-dd):
set gd=%gd:~0,10%
if not "%gd:~4,1%%gd:~7,1%"=="--" goto :err
set/a d=1%gd:~8,2%-100,m=1%gd:~5,2%-100,y=1%gd:~0,4%-10000 || goto :err
if %y% lss 1800 goto :err
if %y% gtr 2050 goto :err
if %m% gtr 12 goto :err
if %m% leq 0 goto :err
if %d% leq 0 goto :err
set/a vy=y%%4,vm=^(m+11^)%%12*3
if %vy%==0 (set ms=%ms0%) else (set ms=%msn%)
set am=!ms:~%vm%,3!
if %d% gtr %am% goto :err
::前面校验日期的有效性,并把年,月,日分别存到变量y,m,d
set ch=7
::计算七天后日期
set/a d+=ch
if %d% gtr %am% (set/a m+=1
if !m! gtr 12 (set/a y+=1,m=1)
set/a d-=am
)
::调整日期格式
if %m% lss 10 (set m=0%m%)
if %d% lss 10 (set d=0%d%)
set date-x=%y%-%m%-%d%
echo 输入的日期是:%gd%
echo 该日期%ch%天后是:%date-x%
echo.
echo.
::修改文件数据
(echo =============================================
for /f "tokens=1* delims==" %%a in (a.property) do (
if "%%b"=="" (echo.%%a) else (
set "str=%%a"
if "!str:~0,9!"=="BeginDate" (echo.%%a=%gd%)
if "!str:~0,7!"=="EndDate" (echo.%%a=%date-x%)
if "!str:~0,6!"=="Minute" (echo.%%a=%%b)
)
)
echo =============================================)>a.temp
type a.temp>a.property
type a.temp&del a.temp
pause
goto :eof
:err
echo 输入格式有错!请重新输入.&goto :lp
Last edited by netbenton on 2009-4-9 at 11:33 ]