- @echo %time%
-
- @echo off & setlocal enabledelayedexpansion
- set sOldFile="ab cd.txt"
- set sNewFile="c.txt"
-
- for %%a in (31 28 31 30 31 30 31 31 30 31 30 31) do set /a i += 1 && set iM!i!=%%a
- for /f "tokens=1-3 delims=-" %%a in ("%date%") do set iThisYear=%%a & set iThisMonth=%%b & set iThisDay=%%c
- set /a iLeapYearCount = (iThisYear - 1) / 4 - (iThisYear - 1) / 100 + (iThisYear - 1) / 400
- call :GetFebDayCount %iThisYear% iM2
- for /l %%a in (1, 1, %iThisMonth%) do if %%a lss %iThisMonth% set /a iThisMonthToDayCount += iM%%a
- set /a iAllDayCount = 365 * (iThisYear - 1) + iLeapYearCount + iThisMonthToDayCount + iThisDay
-
- for /f "usebackq delims=" %%a in (%sOldFile%) do set /a iDayDiff += 1
- set /a iFirstDayCount = iAllDayCount - (iDayDiff - 1)
- set /a iTempYear = iFirstDayCount / 365 - 1
- :GetDate
- set /a iTempLeapCount = iTempYear / 4 - iTempYear / 100 + iTempYear / 400
- set /a iTempDayCount = iFirstDayCount - 365 * iTempYear - iTempLeapCount
- if %iTempDayCount% lss 0 set /a iTempYear -= 1 && goto :GetDate
- if %iTempDayCount% equ 0 set /a iYear = iTempYear, iMonth = 12, iDay = 31 && goto :WriteText
- set /a iYear = iTempYear + 1
- call :GetFebDayCount %iYear% iM2
- for /l %%a in (1, 1, 12) do (
- set /a iTempDayCount -= iM%%a
- if !iTempDayCount! leq 0 set /a iMonth = %%a, iDay = iM%%a + iTempDayCount, iTempDay = iM%%a && goto :WriteText
- )
-
- :WriteText
- cd.>%sNewFile%
- for /f "usebackq delims=" %%a in (%sOldFile%) do (
- if !iMonth! lss 10 (set sMonth=0!iMonth!) else (set sMonth=!iMonth!)
- if !iDay! lss 10 (set sDay=0!iDay!) else (set sDay=!iDay!)
- >>%sNewFile% echo !iYear!年!sMonth!月!sDay!日 %%a
- if !iDay! lss !iTempDay! (
- set /a iDay += 1
- ) else (
- >>%sNewFile% echo.
- if !iMonth! lss 12 (
- set /a iMonth += 1, iDay = 1
- ) else (
- set /a iYear += 1, iMonth = 1, iDay = 1
- call :GetFebDayCount !iYear! iM2
- )
- set /a iTempDay = iM!iMonth!
- )
- )
-
- echo %time%
-
- pause
- exit /b
-
-
-
- :GetFebDayCount
- for %%a in (4 100 400) do set /a r%%a=%1%%%%a
- set %2=28
- if %r400%==0 (set %2=29) else (if %r4%==0 if not %r100%==0 set %2=29)
复制代码
[ 本帖最后由 rat 于 2008-10-20 16:55 编辑 ] |