borgulio
13-05-2012, 20:54
Написал такой батник(кое что взял из предыдущих примеров) и никак не могу заставить его работать как надо:
set /a today = 1%date:~,2%
set /a tomonth = 1%date:~3,2%
set /a toyear = %date:~6,4%
set /a yearcheck = %toyear%/4*4
set $MD=31 31 28 31 30 31 30 31 31 30 31 30
if %toyear% EQU %yearcheck% set $MD=31 31 29 31 30 31 30 31 31 30 31 30
for /F "Tokens=%tomonth:~1% Delims= " %%i In ("%$MD%") Do Set /A dayz=%%i
set /a newday = %today% - 104
if %newday% LEQ 0 set /a newmonth = %tomonth:~1% - 1
if %newday% GEQ 1 set /a newmonth = %tomonth:~1%
set /a newyear = %toyear%
if %newmonth% EQU 0 set /a newyear = %toyear% - 1
if %newmonth% EQU 0 set /a newmonth = 12
if %newday% LEQ 0 set /a newday = %newday% + %dayz%
if %newday% LEQ 9 set /a newday = 10%newday%
if %newmonth% LEQ 9 set /a newmonth = 10%newmonth%
echo %newday:~1%.%newmonth:~1%.%newyear%
Должен выдавать дату на 4 дня раньше текущей
Сил нет уже тестить, то вроде хорошо работает, то по непонятным мне причинам выдает полную ерунду
Например сегодня 14.05.2012, должно выдать 10.05.2012, ничего подобного пишет 0.05.2012
если сделать так: if "%newday%" LEQ "9" set /a newday = 10%newday% выдает 101.05.2012
Почему он считает истиной '10 меньше 9' ????
Помогите разобраться что тут за магия
set /a today = 1%date:~,2%
set /a tomonth = 1%date:~3,2%
set /a toyear = %date:~6,4%
set /a yearcheck = %toyear%/4*4
set $MD=31 31 28 31 30 31 30 31 31 30 31 30
if %toyear% EQU %yearcheck% set $MD=31 31 29 31 30 31 30 31 31 30 31 30
for /F "Tokens=%tomonth:~1% Delims= " %%i In ("%$MD%") Do Set /A dayz=%%i
set /a newday = %today% - 104
if %newday% LEQ 0 set /a newmonth = %tomonth:~1% - 1
if %newday% GEQ 1 set /a newmonth = %tomonth:~1%
set /a newyear = %toyear%
if %newmonth% EQU 0 set /a newyear = %toyear% - 1
if %newmonth% EQU 0 set /a newmonth = 12
if %newday% LEQ 0 set /a newday = %newday% + %dayz%
if %newday% LEQ 9 set /a newday = 10%newday%
if %newmonth% LEQ 9 set /a newmonth = 10%newmonth%
echo %newday:~1%.%newmonth:~1%.%newyear%
Должен выдавать дату на 4 дня раньше текущей
Сил нет уже тестить, то вроде хорошо работает, то по непонятным мне причинам выдает полную ерунду
Например сегодня 14.05.2012, должно выдать 10.05.2012, ничего подобного пишет 0.05.2012
если сделать так: if "%newday%" LEQ "9" set /a newday = 10%newday% выдает 101.05.2012
Почему он считает истиной '10 меньше 9' ????
Помогите разобраться что тут за магия