Originally posted by PPdos at 2007-1-16 08:39 PM:
各位厉害。。竟然连毫秒都准确到了 。。看来可以修改成春节倒计时了^^
@ECHO OFF&MODE CON COLS=40 LINES=3&TITLE=新年倒计时
SETLOCAL ENABLEDELAYEDEXPANSION
SET /A YEAR=%DATE:~0,4%,MONTH=%DATE:~5,2%,DAY=%DATE:~8,2%
CALL :ALG MONTH %MONTH%&&CALL :ALG DAY %DAY%
IF NOT "%1" == "" SET NB=%1&&GOTO :TOPY
SET /A NX=%RANDOM%%%12+1,NZ=%RANDOM%%%28+1
SET NYY=%NX%.%NZ%
:TOPX
CLS&ECHO.&SET /P NB=%NYY%过年?
IF "%NB%" == "" SET NB=%NYY%&&GOTO TOPZ
IF /I "%NB:~0,1%" == "n" SET NYY=那是什么时候&&GOTO TOPX
IF /I "%NB:~0,1%" == "y" SET NB=%NYY%&&GOTO TOPY
IF NOT "%NB%" == "" SET NYY=%NB%&&GOTO TOPX
:TOPY
ECHO %NB%|FINDSTR /R "^**">nul||GOTO TOPX
FOR /F "tokens=1,2 delims=.:;-/" %%i IN ("%NB%") DO CALL :ALG BM %%i&CALL :ALG BD %%j
IF NOT %BM% GTR 0 (GOTO TOP) ELSE IF %BM% GTR 12 GOTO TOPX
IF NOT %BD% GTR 0 (GOTO TOP) ELSE IF %BD% GTR 31 GOTO TOPX
FOR /L %%i IN (1,1,12) DO (
if %%i geq 8 (set d1=30&&set d2=31) else set d1=31&&set d2=30
set /a st=%%i%%2
if !st! equ 0 (set M%%i=!d2!) else set M%%i=!d1!)
CALL :LM %YEAR%
IF %BM% GTR %MONTH% SET GO=GTR
IF %BM% EQU %MONTH% SET GO=EQU
IF %BM% LSS %MONTH% SET /A NEWYEAR=%YEAR%+1&&SET GO=LSS
GOTO %GO%
:GTR
FOR /L %%i IN (%MONTH%,1,%BM%) DO SET /A DALL=!DALL!+M%%i
SET /A DALL=%DALL%+!M%MONTH%!-%DAY%+%BD%-M%MONTH%-M%BM%
GOTO TIME
:EQU
IF %BD% GTR %DAY% SET /A DALL=%BD%-%DAY%&&GOTO TIME
IF %BD% EQU %DAY% SET DALL=0&&GOTO TIME
IF %BD% LSS %DAY% SET /A NERA=%DAY%-%BD%&&GOTO LSS
:LSS
FOR /L %%i IN (%MONTH%,1,12) DO SET /A OALL+=M%%i
SET /A OALL=%OALL%+!M%MONTH%!-%DAY%-M%MONTH%
CALL :LM %NEWYEAR%
FOR /L %%i IN (1,1,%BM%) DO SET /A NALL+=M%%i
SET /A NALL+=%BD%-M%BM%
SET /A DALL=%OALL%+%NALL%
:TIME
FOR /F "tokens=1-4 delims=:." %%a IN ("%TIME%") DO (
CALL :ALG TT %%b&&CALL :ALG TS %%c&&CALL :ALG TM %%d
SET /A TH=24-%%a-1,TT=60-!TT!-1,TS=60-!TS!-1,TM=1000-!TM!*10
CLS&ECHO/&ECHO 距新年还有%DALL%天!TH!小时!TT!分!TS!秒!TM!毫秒)
IF "%DAY%" == "%DATE:~8,2%" (GOTO TIME) ELSE GOTO END
:END
START /I "" %0 "NB"
GOTO :EOF
:LM
SET /A LM=(%1-2000)%%4
IF NOT %LM% EQU 0 (SET M2=28) ELSE SET M2=29
GOTO :EOF
:ALG
SET CHKALG=%2
IF "%CHKALG:~1,1%" == "" SET %1=%CHKALG%&GOTO :EOF
SET /A %1=%CHKALG:~0,1%*10+%CHKALG:~-1%
GOTO :EOF
我刚写的嘿嘿:D