|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление старых архивов |
|
CMD/BAT - [решено] Удаление старых архивов
|
Новый участник Сообщения: 47 |
Профиль | Отправить PM | Цитировать привет.
Ребята прошу помощи!!! Надо удалять старые архивы рара которым больше 5 дней с помощью скрипта. Может у кого есть готовый, - поделитесь пожалуйста... |
|
------- Отправлено: 18:55, 29-09-2010 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать для стандартного формата даты: "ДД.ММ.ГГГГ"
@Echo Off SetLocal EnableDelayedExpansion Call :FromNow -5 for %%i in (*.rar) do ( set $t=%%~ti& set $d=!$t:~6,4!!$t:~3,2!!$t:~,2! if !$d! LSS %yyyymmdd% DEL /F "%%i" ) Exit /B :FromNow SetLocal Set yyyy=%DATE:~-4%& set /a mm=100%DATE:~3,2%%%100& set /a dd=100%DATE:~,2%%%100 Set /A JD=%~1+dd-32075+1461*(yyyy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yyyy+4900+(mm-14)/12)/100)/4 Set /A L=JD+68569,N=4*L/146097,L=L-(146097*N+3)/4,I=4000*(L+1)/1461001 Set /A L=L-1461*I/4+31,J=80*L/2447,K=L-2447*J/80,L=J/11 Set /A J=J+2-12*L,I=100*(N-49)+I+L Set /A yyyy=I,mm=100+J,dd=100+K EndLocal& Set yyyymmdd=%yyyy%%mm:~-2%%dd:~-2% Exit /B http://www.dostips.com/DtTipsDateTim...ion.date2jdate |
Последний раз редактировалось amel27, 30-09-2010 в 14:49. Отправлено: 06:26, 30-09-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 47
|
Профиль | Отправить PM | Цитировать Ещё вопрос, например если я хочу сменить с 15 дней на 5? Мне достаточно изминить 15 на 5 ???
|
------- Отправлено: 11:37, 30-09-2010 | #3 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать wizardkir, угу, процедура FromNow отсчитывает заданное количество дней от текущей даты, результат потом используется для сравнения
|
Отправлено: 11:57, 30-09-2010 | #4 |
Старожил Сообщения: 426
|
Профиль | Отправить PM | Цитировать Вот и появилась вменяемая формула для работы с датами... но по мне - лучше оставить последние 5 (или 15) архивов... а то если "почему-то" бэкапы не прошли, то нужно иметь хоть что-то, а не вытирать все подряд за сроком давности.
|
|
------- Отправлено: 12:29, 30-09-2010 | #5 |
Новый участник Сообщения: 47
|
Профиль | Отправить PM | Цитировать трабл, скрипт сработал один раз и больше не пашет...ребят не подскажите в чом дело?
|
------- Отправлено: 17:40, 10-11-2010 | #6 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать wizardkir, не запускается или запускается, но не делает что надо?...
|
Отправлено: 09:57, 11-11-2010 | #7 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Удаление архивных файлов в подпапках 1 уровня вложенности в указанной директории
Сохранение только N количесво последних по дате изменения файлов Например из C:/ARCHIVE/ Структура: C:/ARCHIVE/User1 C:/ARCHIVE/User1/file1_archive_2008-MM-DD.rar C:/ARCHIVE/User1/file2_archive_2007-MM-DD.rar C:/ARCHIVE/User1/file3_archive_2006-MM-DD.rar C:/ARCHIVE/User2 C:/ARCHIVE/User2/file1_archive_2011-MM-DD.rar C:/ARCHIVE/User2/file2_archive_2010-MM-DD.rar C:/ARCHIVE/User2/file3_archive_2009-MM-DD.rar В результате будут удалены 2 файла: 1) C:/ARCHIVE/User1/file3_archive_2006-MM-DD.rar 2) C:/ARCHIVE/User2/file3_archive_2009-MM-DD.rar Настраиваемые параметры: set BackUpFolder=C:/ARCHIVE set KeepNumFiles=2 @echo off SetLocal EnableExtensions set BackUpFolder=C:/ARCHIVE set KeepNumFiles=2 @echo. & @echo Script Start: & @echo. @rem Get LIST of Directories -------------------------------------------- @pushd %BackUpFolder%>dirs.log 2>&1 find "The system cannot find the path specified." < dirs.log > nul if errorlevel 1 ( @for /f "tokens=* delims=" %%D in ('dir /ad /b /o-d') do call :FromDir %%D ) else ( @echo Wrong Path %BackUpFolder% in param "BackUpFolder": Location did not find! @echo Wrong Path %BackUpFolder% in param "BackUpFolder": Location did not find!>>erase_old_files.log exit ) @exit /b @popd :FromDir @set NumFiles=%KeepNumFiles% @set CurrentDir=.\%1 @echo Directory: %CurrentDir% DIR "%CurrentDir%" /B /A-D /o-d>dirs.log 2>&1 find "File Not Found" < dirs.log > nul if errorlevel 1 ( @for /f "tokens=* delims=" %%1 in ('DIR "%CurrentDir%" /B /A-D /o-d') do call :CheckFiles %%1 @exit /b ) else ( @echo Directory %1 is EMPTY! @echo %date% %time%: Script detected, that Folder "%CurrentDir%" is EMPTY!>>erase_old_files.log @exit /b ) :CheckFiles if not %NumFiles%==0 set /a NumFiles-=1&exit /b @echo File deleted: %1 @echo %date% %time%: erase %CurrentDir%\%1>>erase_old_files.log erase "%CurrentDir%\%1" @exit /b |
Последний раз редактировалось biossa, 28-09-2011 в 23:18. Отправлено: 21:31, 28-09-2011 | #8 |
Пользователь Сообщения: 94
|
Профиль | Отправить PM | Цитировать задача похожая, есть каталог допустим C:/123 в которой есть файлы *.avi которые там появляются в достаточном количестве и мне надо удалять файлы *.avi в этом каталоге которые старше 7 дней.
подойдёт ли пример написаны amel27 только с маленьким дополнением не пинайте сильно я в этом языке мало что понимаю. |
Отправлено: 09:13, 20-08-2013 | #9 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать не проще ли обычным forfiles /D?
|
Отправлено: 14:16, 20-08-2013 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - [решено] Удаление старых учетных данных из АД | Donner | Скриптовые языки администрирования Windows | 2 | 17-06-2014 09:56 | |
Служебные - [Addon] Удаление драйверов принтеров, старых SCSI, сканеров, мультикарт и модемов | greg_b | Наборы обновлений для Windows XP/2003/Windows 7 | 409 | 07-07-2011 10:07 | |
Драйвер - [решено] Удаление старых устройств | Elvis | Microsoft Windows 2000/XP | 3 | 20-07-2009 15:58 | |
удаление старых объектов домена. Невозможнсоть переподключения под старым именем | baribanka | Microsoft Windows NT/2000/2003 | 3 | 07-11-2005 17:18 | |
удаление повреждённых архивов | Jul | Защита компьютерных систем | 2 | 17-01-2004 15:56 |
|