- @echo off&setlocal enabledelayedexpansion
- cd.>c.txt
- echo %time%
- for %%a in (1 3 5 7 8 10 12) do set _%%a=31
- for %%a in (4 6 9 11) do set _%%a=30
- for /f "tokens=1-3 delims=- " %%a in ("%date%") do set/a "Year=%%a,Month=100%%b%%100,Day=100%%c%%100+1"
- for /f "delims=:" %%a in ('findstr /n /v $ "ab cd.txt"') do set /a "Line=%%a,Feb=28+^!(year%%4)"
- set "Monthes=1#31 2#%Feb% 3#31 4#30 5#31 6#30 7#31 8#31 9#30 10#31 11#30 12#31"
- for %%i in (%Monthes%) do for /f "tokens=1,2 delims=#" %%a in ("%%i") do if %%a leq %Month% set /a DayCount+=%%b
- for /f "tokens=%month%" %%a in ("%Monthes%") do for /f "tokens=1,2 delims=#" %%i in ("%%a") do set/a DayCount-=%%j-Day
- set /a LineTemp=Line-DayCount
- :loop
- set/a "LineTemp-=365+(^!(year%%4)&^!(^!(year%%100))|^!(year%%400)),Year-=1"
- if %LineTemp% geq 365 goto loop
- set/a "Year-=1,Month=12,Feb=28+^!(Year%%4)"
- :loop1
- if %LineTemp% gtr !_%Month%! (
- for /f "tokens=%Month%" %%a in ("1#31 2#%Feb% 3#31 4#30 5#31 6#30 7#31 8#31 9#30 10#31 11#30 12#31") do (
- for /f "tokens=1,2 delims=#" %%i in ("%%a") do set/a LineTemp-=%%j
- set/a month-=1&goto loop1
- ))
- set /a Day=_%Month%-LineTemp
- for /f "usebackq delims=" %%a in ("ab cd.txt") do (
- if !Month! lss 10 (set "Mon=0!Month!") else (set "Mon=!Month!")
- if !Day! lss 10 (set "Da=0!Day!") else (set "Da=!Day!")
- echo !Year!年!Mon!月!Da!日 %%a
- set/a Day+=1
- if !Day! GTR 28 CALL :MonitorMonthCount
- )>>c.txt
- echo %time%
- pause>nul&exit/b
- :MonitorMonthCount
- if %day% gtr !_%month%! set/a "day=1,month+=1"&echo.
- if !month! equ 13 set /a "month=1,year+=1,_2=28+(^!(year%%4)&^!(^!(year%%100)) | ^!(year%%400))"
复制代码 钻了一个空子,用findstr /n /v $ "ab cd.txt"来计算行数,当然最末行不能是空行。 |