исправленный вариант моего
старого скрипта, тестируйте:
Код:
![Выделить весь код](images/misc/selectcode.png)
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
SET SIGN=+
SET DAYS=31
If %DATE:~0,1%==0 (Set T_DAY=%DATE:~1,1%) Else Set T_DAY=%DATE:~0,2%
If %DATE:~3,1%==0 (Set T_MONTH=%DATE:~4,1%) Else Set T_MONTH=%DATE:~3,2%
Set T_YEAR=%DATE:~6,4%
:SkipDays
Call :NextDay %SIGN%1
Set /A DAYS=%DAYS%-1
If %DAYS% NEQ 0 GoTo :SkipDays
Set T_DAY=0%T_DAY%& Set T_MONTH=0%T_MONTH%
Echo %T_DAY:~-2%.%T_MONTH:~-2%.%T_YEAR%
Exit /B 0
:NextDay
Call :GetDaysOfMonth
Set /A T_DAY=%T_DAY%%~1
If %T_DAY% GTR !T_DOFM! (
Call :NextMonth +1
Call :GetDaysOfMonth
Set T_DAY=1
)
If %T_DAY% EQU 0 (
Call :NextMonth -1
Call :GetDaysOfMonth
Set T_DAY=!T_DOFM!
)
GoTo :EOF
:NextMonth
Set /A MNDF=%T_YEAR%*12+%T_MONTH%%1
Set /A T_YEAR=(%MNDF%-1)/12
Set /A T_MONTH=%MNDF%-%T_YEAR%*12
GoTo :EOF
:GetDaysOfMonth
Set /A M1=T_YEAR-(T_YEAR/4)*4
Set /A M2=T_YEAR-(T_YEAR/100)*100
Set /A M3=T_YEAR-(T_YEAR/400)*400
Set $MD=31 28 31 30 31 30 31 31 30 31 30 31
If 0 EQU %M1% IF 0 NEQ %M2% Set $MD=31 29 31 30 31 30 31 31 30 31 30 31
If 0 EQU %M3% Set $MD=31 29 31 30 31 30 31 31 30 31 30 31
For /F "Tokens=%T_MONTH% Delims= " %%i In ("%$MD%") Do Set /A T_DOFM=%%i
GoTo :EOF