![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - если дата в логе старше 7 дней отписать новую |
|
CMD/BAT - если дата в логе старше 7 дней отписать новую
|
Новый участник Сообщения: 26 |
для бекапа использую батник в котором много блоков
несколько из них требуют чтоб запуск был не чаше 1 раз в неделю как проверить что если дата в логе старше 7 дней, тогда выполнить другое действие ??? |
|
Отправлено: 18:30, 12-10-2011 |
Ветеран Сообщения: 1759
|
mouserok,
Вот, можешь попытаться прикрутить. Но лучше все-таки *.ps1 или *.vbs :: Разница между датами в днях @echo off setlocal :again set d=%date:~0,2% set m=%date:~3,2% set y=%date:~6,4% if %d:~0,1%==0 set d=%d:~1% if %m:~0,1%==0 set m=%m:~1% set /a feb=y%%4 if %feb%==0 (set feb=29) else (set feb=28) set /a m-=1 if %m%==0 (set yd=0 && goto:skip) :tok set /a tok+=1 for /f "tokens=%tok%" %%i in ("31 %feb% 31 30 31 30 31 31 30 31 30 31") do ( set /a yd+=%%i if not %tok%==%m% goto:tok ) :skip set /a res=y*365+y/4+29-feb+yd+d set tok= set yd= if not defined res1 ( set res1=%res% set /p date="Enter date: " goto:again ) set /a res-=res1 if not %res%==0 ( if %res:~0,1%==- ( echo %res:~1% days from %date% ) else ( echo %res% days to %date% ) ) else ( echo today is %date% ) $date = gc test.log if ((new-timespan $date[$date.count-1] $(get-date)).days -ge 7) {cmd /c 1.cmd} |
Последний раз редактировалось Foreigner, 12-10-2011 в 20:42. Отправлено: 20:02, 12-10-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать mouserok, мало информации для ответа.
|
Отправлено: 20:23, 12-10-2011 | #3 |
Новый участник Сообщения: 26
|
Профиль | Отправить PM | Цитировать фига се ... я даже не знаю что с этим делать
вообще батник делает бэкап ... и в конце отписывает дату отработки YYYY.MM.DD вот по этой дате нужно сверить с текущей |
Отправлено: 09:32, 13-10-2011 | #4 |
Новый участник Сообщения: 26
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 14:02, 13-10-2011 | #5 |
Новый участник Сообщения: 26
|
Профиль | Отправить PM | Цитировать получилось
проверяет нет ли ошибок в логе затем генерятся дата и ищется @echo off findstr /m /C:"___BAD" test.log>nul SET error=%errorlevel% IF %error% NEQ 1 (echo exit&goto :EOF) else (echo NEXT) SET finded=1 FOR /F %%a IN (days.lst) DO call 4.bat %%a IF %finded% NEQ 1 (echo finded) else (echo.) @echo off SET count_day_off=%1 for /f "skip=2 tokens=2*" %%i in ('reg QUERY "HKCU\Control Panel\International" /v sDate') do set sdate=%%j for /f "delims=%sdate% tokens=1,2,3" %%i in ("%DATE%") do call :getpackage %%i %%j %%k :: проверочка rem echo %year% rem echo %month% rem echo %day% rem echo %package% findstr /m /C:"%package%___" test.log>nul SET error=%errorlevel% IF %error% NEQ 1 (SET finded=0&GOTO :EOF) :: тут можно поместить необходимые нам команды goto :EOF :getpackage set day=%1 set month=%2 set /a year=%3 set lastdays="31 28 31 30 31 30 31 31 30 31 30 31" if %day% leq 9 set /a day=%day:~-1% if %month% leq 9 set /a month=%month:~-1% set /a day-=%count_day_off% if "%day%"=="0" set /a month-=1 if "%month%"=="0" set /a month=12,year-=1 set /a isleap="(year%%4)&((year%%100)|(year%%400))" if "%isleap%"=="0" set lastdays=%lastdays:28=29% if "%day%"=="0" for /f "tokens=%month%" %%i in (%lastdays%) do set day=%%i if %day% leq 9 set day=0%day% if %month% leq 9 set month=0%month% set package=%year%.%month%.%day% rem set package=%year%-%month%-%day% goto :EOF |
Отправлено: 15:35, 13-10-2011 | #6 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Нужно удалить лог файлы старше 30 дней | ksv_sergo | Скриптовые языки администрирования Windows | 14 | 24-03-2016 15:02 | |
Любой язык - Удаление файлов старше 5 дней кроме указанного по имени. | Joni | Скриптовые языки администрирования Windows | 6 | 11-07-2012 11:18 | |
[решено] Автоочистка файлов, старше 5 дней. | Universal_gr | Программное обеспечение Linux и FreeBSD | 1 | 01-10-2010 01:12 | |
[решено] не могу в ЛС человеку отписать | harleysoft | О сайте и форуме | 2 | 27-08-2010 14:10 | |
Прочее - удаление файлов старше 10 дней | admin666 | Общий по Linux | 1 | 23-07-2009 19:09 |
|