Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


исправленный вариант моего старого скрипта, тестируйте:
Код: Выделить весь код
@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

Отправлено: 05:52, 11-02-2010 | #9