|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление созданных папок и файлов по времени |
|
|
CMD/BAT - [решено] Удаление созданных папок и файлов по времени
|
Старожил Сообщения: 157 |
Всем добрый день!!!!
есть необходимость дописать скрипт, я в этом деле не мастер, но вот сейчас понадобилось. Вот существующий for /f "tokens=5,7,6 delims=_ " %%i in ('date /t') do (set date = %%i-%%j-%%k) echo %date% set new_name=%date% echo %new_name% Mkdir d:\Backup\%new_name% CD /D d:\Backup\%new_name% Xcopy d:\mazda /S /E Суть такова, делается папка с названием даты (число, месяц, год), необходимо чтобы после отрабатывания вот этого скрипта удалялись папки недельной давности отсчетом от вновь созданного. Например: Сегодня создалась утром папка 03.07.09, а уавтоматом удалилась 27.06.09. Заранее всем благодарен!!!! |
|
Отправлено: 14:32, 03-07-2009 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Felix007:
@Echo Off :: Параметры скрипта, 0 < $OLD < 29! :: $SRC - где ищем файлы :: $OLD - какие файлы считаем старыми :: $LST - имя файла для списка :: $EXT - тип файла/расширение Set $SRC=C:\ Set $EXT=TXT Set $LST=C:\_\Files.LST Set $OLD=25 :: Находим текущие день/месяц/год For /F "Tokens=1" %%i In ('WMIC OS Get LocalDateTime^,Version^|Find "."') Do Set DateTime=%%i Set $Y=%DateTime:~0,4% If "%DateTime:~4,1%"=="0" (Set $M=%DateTime:~5,1%) Else (Set $M=%DateTime:~4,2%) If "%DateTime:~6,1%"=="0" (Set $D=%DateTime:~7,1%) Else (Set $D=%DateTime:~6,2%) :: Откатываем дату назад на $OLD дней Call :GetOldDate %$OLD% :: Выделяем из имени исходного каталога диск и путь If Exist "%$SRC%" For /F "Delims=" %%i In ("%$SRC%") Do Set $DRV=%%~di& Set $PTH=%%~pni\ If Not "%$PTH%"=="\\" Set $PTH=%$PTH:\=\\% :: Получаем список файлов старше $OLD дней If Exist "%$LST%" DEL /F/Q "%$LST%" For /F "UseBackQ Tokens=2 Delims==" %%i In (`WMIC Path CIM_DataFile Where^ "Drive='%$DRV%' And Extension='%$EXT%' And LastModified<'%DateTime%' And Path Like '%$PTH%%%'"^ Get Name /Value^|Find "="` ) Do For /F "Delims=" %%a In ('Echo %%i') Do Echo %%a >>%$LST% :: Выход EXIT :GetOldDate :: ----------------------------------- :: Расчет даты, предшествующей текущей :: заданное количество дней (< 29) :: ----------------------------------- Set /A $D -= %1 If %$D% GTR 0 GoTo GetOldDate_2 :: Месяц, год, дней в месяце Set /A $M=%$M%+11-((%$M%+10)/12)*12 If %$M% EQU 12 Set /A $Y-=1 For /F "Tokens=%$M%" %%i In ("31 28 31 30 31 30 31 31 30 31 30 31") Do Set $X=%%i If %$M% NEQ 2 GoTo GetOldDate_1 :: Февраль високосного года Set /A $B1=%$Y%-(%$Y%/4)*4 Set /A $B2=%$Y%-(%$Y%/100)*100 Set /A $B3=%$Y%-(%$Y%/400)*400 If 0 EQU %$B1% If 0 NEQ %$B2% Set /A $X+=1 If 0 EQU %$B3% Set /A $X+=1 :: День месяца :GetOldDate_1 Set /A $D=%$D%+%$X%-((%$D%+%$X%-1)/%$X%)*%$X% :: Форматирование даты :GetOldDate_2 Set $M=0%$M%&Set $D=0%$D% Set $M=%$M:~-2%&Set $D=%$D:~-2% Set DateTime=%$Y%%$M%%$D%%DateTime:~8% GoTo :EOF |
|
Последний раз редактировалось amel27, 21-08-2009 в 13:10. Причина: оформление, ошибка Отправлено: 12:37, 20-08-2009 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать amel27, спасибо большое оч помог!!! Архивирование прокатило!!! Как выбирать файлы которые старше 29 дней, мне например нужно выбрать файлы старше 280 дней и он конечно не отрабатывает. Помоги пожалуйста!!!
|
Последний раз редактировалось Felix007, 25-08-2009 в 19:32. Отправлено: 15:16, 20-08-2009 | #22 |
Ветеран Сообщения: 2733
|
Профиль | Отправить PM | Цитировать Вот скрипт, который решает Вашу задачу для любого количества дней.
Текст скрипта перенесите в блокнот, сохраните в файл с расширением .vbs, например ArcNDays.vbs Запускайте как обычный исполнимый файл (как bat, например) Скрипт использует ключи архиватора WinRar -r -архивируем с поддиректориями -df -удаляем файлы после архивации -tb -архивируем файлы старше указанного времени Скрипт вычисляет дату, отстоящую от текущей на указанное число дней и формирует командную строку с архиватором. Архиватор архивирует старые файлы в указанную директорию и удаляет исходные файлы. ' Исходные данные ' ------------------------------------------------------------------------ DirRab = "D:\Проба пера\" ' Директория, откуда забираем файлы (c \ на конце) DirArc = "D:\Проба пера.ARC\" ' Директория, куда архивируем файлы (c \ на конце) NDaysDele = 31 ' Файлы старше NDaysDele будут заархивированы и удалены Arc = """C:\Program Files\WinRar\WinRar.exe""" ' Путь к архиватору ' ------------------------------------------------------------------------ MDate = CStr(DateAdd("d",-NDaysDele,Date)) ' Дата отстоящая от текущей на NDaysDele дней Set WS = CreateObject("WScript.Shell") DateArc=Mid(MDate,7,4)+Mid(MDate,4,2)+Mid(MDate,1,2) R = WS.Run(Arc+" a -r -df -tb"+DateArc+"0001 """+DirArc+DateArc+""" """+DirRab+"*.*""", 1, True) |
------- Отправлено: 23:27, 25-08-2009 | #23 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать megaloman, спасибо, Winrar-ром я уже делал и у меня все отлично получилось т.к у него полно своих средств для реализации данной задачи. ЩАс вин рар пришлось удалить т.к нет лицензии и требуется реализовать это с помощью 7-zip. А вот как правильно сделать это с датой я пока не придумал...
|
Отправлено: 00:03, 26-08-2009 | #24 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать поднимаю тему.
Возникла проблема с правами :: Находим текущие день/месяц/год ('WMIC OS Get LocalDateTime^|Find "."') вот эта команда не работает, как можно упростить поиск текущей даты? |
Отправлено: 10:36, 22-04-2013 | #25 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Удаление папок по критериям | jentoso | Скриптовые языки администрирования Windows | 16 | 17-06-2009 11:38 | |
Любой язык - [решено] удаление файлов по маске, созданных за прошлые сутки | BRAT2 | Скриптовые языки администрирования Windows | 1 | 06-04-2009 08:51 | |
VBS/WSH/JS - [решено] Удаление файлов созданных ранее текущей даты на неделю | KillHunter | Скриптовые языки администрирования Windows | 5 | 06-03-2009 12:23 | |
[решено] Удаление файлов и папок | ArGoth | Автоматическая установка Windows 2000/XP/2003 | 1 | 26-05-2008 18:03 | |
Удаление всех папок и файлов из папки c:\Temp | DIKPro | Microsoft Windows NT/2000/2003 | 10 | 15-08-2006 16:20 |
|