『第
20 楼』:
谢谢大家的答案
总结综合了大家的方法,终于搞出来了,请大家帮忙看一看,改一改
::通过日期计算天数并显示星期
::通过天数计算日期并显示星期
@echo off
:loop
set xuanz=
cls&echo.&echo 按 t 使用天数查询, 按 r 或任意键使用日期查询.
echo.&set /p xuanz= 请选择: [t,r]:
if "%xuanz%"=="t" goto tgtian
cls&echo.&echo 当前日期是 %date%&echo.&set toDate=
echo 请输入要查询的日期 格式 (20070101)
echo.&echo 若要查询 “当前日期以后” 的日期 请先输入 + 号 如: (+20080102)
echo.&set /p toDate= 请输入:
if not defined toDate exit
if %toDate:~0,1%==+ (
if %toDate:~1,4%-%toDate:~5,2%-%toDate:~7,2% leq %date:~0,10% (
cls&echo.&echo 您输入的是 %toDate% 若要查询当前日期以前的日期,请不要输入 + 号
echo.&echo 您的输入有误,请按任意键重新输入.........
pause>nul&goto loop
)
)
if not %toDate:~0,1%==+ (
if %toDate:~0,4%-%toDate:~4,2%-%toDate:~6,2% geq %date:~0,10% (
cls&echo.&echo 您输入的是 %toDate% 若要查询当前日期以后的日期,请先输入 + 号
echo.&echo 您的输入有误,请按任意键重新输入.........
pause>nul&goto loop
)
)
if "%toDate:~0,1%"=="+" goto yihou
>tmp.vbs echo wscript.echo datediff("d",#%date:~0,10%#,#%toDate:~0,4%-%toDate:~4,2%-%toDate:~6,2%#)
goto yiqian
:yihou
>tmp.vbs echo wscript.echo datediff("d",#%toDate:~1,4%-%toDate:~5,2%-%toDate:~7,2%#,#%date:~0,10%#)
for /f %%i in ('"cscript //nologo tmp.vbs"') do call set ook=%toDate:~1,4%-%toDate:~5,2%-%toDate:~7,2% 距今天相差 %%i 天&set week=%%i
goto del_
:yiqian
for /f %%i in ('"cscript //nologo tmp.vbs"') do call set ook=%toDate:~0,4%-%toDate:~4,2%-%toDate:~6,2% 距今天相差 %%i 天&set week=%%i
:del_
del tmp.vbs
goto xinqi
::-----------------------------------------------------------------------------------------
::通过天数得到日期
:tgtian
cls&echo.&echo 当前日期是 %date%&echo.
echo 查询“当前日期之后”的天数请先输入 + 号,如: +10 表示10天以后的日期:
echo.&set /p n= 请输入:
if "%n:~0,1%"=="+" set n=-%n%
>%tmp%\tmp.vbs echo wscript.echo dateadd("d",-%n%,date)
for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo %tmp%\tmp.vbs') do (
set y=%%i
set m=%%j
set d=%%k
)
if %m% LSS 10 set m=0%m%
if %d% LSS 10 set d=0%d%
set toDate=%y%%m%%d%
::-----------------------------------------------------------------------------------------
::查询星期
:xinqi
for %%n in (week1-日 week2-一 week3-二 week4-三 week5-四 week6-五 week7-六) do set Tmp2=%%n&&call set %%Tmp2:-==%%
set week=+0
if "%toDate:~0,1%"=="+" goto yihou2
>tmp.vbs echo wscript.echo Weekday(CDate("%toDate:~0,4%-%toDate:~4,2%-%toDate:~6,2%")%week%)
for /f "tokens=* delims=-" %%i in ('"cscript //nologo tmp.vbs"') do call set ok=星期%%week%%i%%
goto yiqian2
:yihou2
>tmp.vbs echo wscript.echo Weekday(CDate("%toDate:~1,4%-%toDate:~5,2%-%toDate:~7,2%")%week%)
for /f "tokens=* delims=-" %%i in ('"cscript //nologo tmp.vbs"') do call set ok=星期%%week%%i%%
:yiqian2
del tmp.vbs
if "%xuanz%"=="t" goto xst
cls&echo.&echo 今天是 %date%
echo.
if "%toDate:~0,1%"=="+" (
echo 还要过 %ook:~18% 才是您输入的 %ook:~0,10% %ok%
pause>nul&goto loop
)
echo 您输入的 %ook:~0,10% %ok% %ook:~11,5% %ook:~18%
echo.&pause>nul&goto loop
:xst
cls&echo.&echo 今天是 %date%
echo.
if "%n:~0,1%"=="-" (
echo %n:~2% 天以后的日期是 %toDate:~0,4%-%toDate:~4,2%-%toDate:~6,2% %ok%
pause>nul&goto loop
)
echo %n% 天以前的日期是 %toDate:~0,4%-%toDate:~4,2%-%toDate:~6,2% %ok%
pause>nul&goto loop
[ Last edited by 26933062 on 2007-2-10 at 06:07 AM ]
|