|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Автоматическое удаление файлов |
|
|
CMD/BAT - Автоматическое удаление файлов
|
Пользователь Сообщения: 55 |
День добрый. Поскажите решение данной задачи :раз в сутки очистить папку "Obmen". Заархивировать и скопировать содержимое папки в паку "Arh" (на всякий случай ) и удалить содержимое (папки и файлы). Желательно с помощью bat-ника
Спасибо. |
|
Отправлено: 14:14, 24-08-2009 |
Новый участник Сообщения: 35
|
Профиль | Сайт | Отправить PM | Цитировать посмотрите команды copy и del
консольно архивировать может любой современный архиватор |
------- Отправлено: 13:24, 25-08-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Идея решения - используем распространённый архиватор WinRar, у которого есть ключи
-df - архивировать с удалением файлов -tb - архивировать файлы старше указанного времени Берём системную дату, преобразуем её в вид, пригодный для архиватора, запускаем архиватор с указанными ключами для архивации файлов на начало текущих суток. При желании анализируем наличие архива (строка с If) и позволяем работать архиватору не чаще раза в сутки. Вот батник: rem --------------------------------------------------------------- rem Надо настроить: rem Gde - Папка, где берём файлы для архивирования и удаления rem Kuda - Папка, где храним архивы rem TDate - Дата в формате ГГГГММДД rem В приведенном батнике дата преобразуется из системной переменной %Date% rem Для Win XP или 2003 %Date% по умолчанию выдаётся в формате ДД.ММ.ГГГГ rem При необходимости написать своё преобразование Set Gde=D:\Obmen Set Kuda=D:\Obmen.arh Set TDate=%date:~6,4%%date:~3,2%%date:~0,2% If Exist %Kuda%\%TDate%.rar GoTo End MD %Kuda% "%programfiles%\WinRar\Winrar.exe" a -r -df -tb%TDate%0001 %Kuda%\%TDate%.rar %Gde%\*.* :End rem --------------------------------------------------------------- Обратите внимание, что содержимое папки архивируется с подпапками (ключ -r). Поэтому архивную папку нельзя помещать внутрь архивируемой папки. Не храните бат-файл внутри архивируемой папки - архиватор в конце концов его удалит. И, наконец, если WinRar установлен не в Program Files, напишите правильный к нему путь |
------- Последний раз редактировалось megaloman, 25-08-2009 в 19:34. Причина: Уточнение Отправлено: 19:13, 25-08-2009 | #3 |
Новый участник Сообщения: 48
|
Профиль | Отправить PM | Цитировать И лучше использовать бесплатный 7-zip
|
Отправлено: 23:56, 28-08-2009 | #4 |
Пользователь Сообщения: 55
|
Можно поподробней объяснить, что значит строки:
Set TDate=%date:~6,4%%date:~3,2%%date:~0,2% "%programfiles%\WinRar\Winrar.exe" a -r -df -tb%TDate%0001 %Kuda%\%TDate%.rar %Gde%\*.* Не понятно что за числа |
|
Отправлено: 09:27, 29-08-2009 | #5 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Системная переменная %Date% принимает значение текущей системной даты.
По умолчанию в Win XP и 2003 это дд.мм.гггг. В командном окне можете набрать Echo %Date% и посмотреть, что получится. Условно изображу дату в виде номеров позиций символов слева направо: 01.34.6789 Итак, выражение %date:~6,4% вырежет из символьной строки даты символы, начиная с 6 позиции в количестве 4 штуки, т е 6789, то есть гггг. Аналогично для дня и месяца. В результате я присвоил переменной TDate литерал вида ггггммдд, которая понадобится мне для подстановки в командную строку архиватора WinRar Если у Вас дата выдаётся в другом формате, соответственно надо написать своё выражение для TData, чтобы получить в результате ггггммдд. (подробнее наберите в командном окне Set /? For /?) Если в командном окне наберёте echo %programfiles% полУчите путь папки Program Files (у меня это C:\Program Files), куда по умолчанию устанавливаются общесистемные программы, в частности, WinRar. Если архаватор в другом месте, естественно надо вместо %programfiles% указать реальный путь. Таким образом строка "%programfiles%\WinRar\Winrar.exe" выдаёт полный путь к архиватору. Кавычки - путь с пробелами должен быть в кавычках. Без пробелов - кавычки тоже не помешают. "C:\Program Files\WinRar\Winrar.exe" Смысл команд и ключей смотрите в справочной системе WinRar -вызовите WinRar-меню Справка - Содержание команда a -добавить файлы в архив ключ -r - c подпапками ключ -df - с удалением файлов после архивации ключ -tb - архивировать файлы, модифицированные до указанной даты Один из требуемых форматов даты ггггммддЧЧММСС Выражение %TDate%0001, например, 31 августа 2009 года будет иметь вид 200908310001 Заархивируются файлы изменённые до 00 час 1 мин 31 августа 2009. В принципе, можно написать %TDate%000001, тогда заархивируются файлы изменённые до 00 час 00 мин 01 сек 31 августа 2009. Файлы будут архивироваться в файл %Kuda%\%TDate%.rar (лучше написать "%Kuda%\%TDate%.rar"), в приведенном примере для указанной мной даты получим архивный файл D:\Obmen.arh\20090831.rar Файлы будут заархивированы из папки %Gde%\*.* (опять же, если в именах пробелы, лучше написать "%Gde%\*.*"), то есть в примере это D:\Obmen Цитата:
Здесь я решал что-то похожее с помощью VBS-скрипта, но, опять же, привлекая WinRar |
|
------- Отправлено: 12:08, 29-08-2009 | #6 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата alnimo:
Для подробностей выполните Set /? Цитата alnimo:
Цитата справка WinRAR:
|
|||
Отправлено: 12:15, 29-08-2009 | #7 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Вот VBS скрипт, решающий похожую задачу, но с архивированием в 7z
' Перемещаем файлы старше указанного количества дней по маске ' из одной папки (без подпапок) в другую - промежуточную ' Упаковываем промежуточную папку с именем сегодняшней даты ' Чистим промежуточную папку ' Исходные данные ---------------- InBox = "H:\Delete\Проба пера" ' Откуда перемещаем OutTmp = "H:\Delete\Проба пера\Tmp" ' Куда перемещаем (TMP) OutArc = "H:\Delete\Work" ' Куда архивируем NDays = 60 ' Файлы старше количества дней Maska="^.*\.txt$" ' Маска файлов (здесь *.txt) Arc="C:\Program Files\7-Zip\7z.exe" ' Путь к архиватору ' -------------------------------- Set FSO = CreateObject("Scripting.FileSystemObject") Set WS = CreateObject("WScript.Shell") Set RE = New RegExp Set InDir = FSO.GetFolder(InBox) Set AllFiles = InDir.Files RE.Pattern = Maska RE.IgnoreCase = True For Each iFile In AllFiles ' Цикл по файлам в папке iName=iFile.Name ' Берём имя файла из папки iDate = iFile.DateLastModified ' Берём дату модификации файла ' iDate = iFile.DateCreated ' Берём дату создания файла (если нужно убрать комментарий!) If RE.Test(iName) And DateDiff("d", iDate, Date) > NDays Then ' Соответствует ли оно маске и дате iFile.Move OutTmp+"\" ' Перемещаем End If Next ' Архивируем Tmp c именем архива = дате (я предпочитаю формат ГГГГММДД) NArc = CStr(Date) ArcFile = OutArc+"\"+Mid(NArc,7,4)+Mid(NArc,4,2)+Mid(NArc,1,2)+".7z" ' Имя архивного файла с путём NArc = " a """+ArcFile+"""" NTmp = " """+OutTmp++"\*.*""" a = WS.Run(""""+Arc+""""+NArc+NTmp,1,True) ' Удаляем файлы в TMP если архив существует If FSO.FileExists(ArcFile) Then FSO.DeleteFile OutTmp+"\*.*", True |
Отправлено: 12:27, 01-09-2009 | #8 |
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать а как сделать чтобы батник работал с файлами только старше 3х месяцев, остальные файлы не трогал?
например сейчас сентябрь, батник бы заархивировал и удалил бы потом все файлы которые были созданы до июня |
Отправлено: 10:57, 21-09-2011 | #9 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Запустите WinRar, вызовите справку.
Цитата:
|
|
------- Отправлено: 11:17, 21-09-2011 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Службы - Автоматическое удаление очереди при печати | icold | Microsoft Windows 2000/XP | 0 | 15-12-2009 13:26 | |
Разное - CloneSpy - автоматическое/полуавтоматическое удаление дубликатов файлов | ShaRP | Программное обеспечение Windows | 0 | 25-05-2008 19:54 | |
Автоматическое удаление приложений.. | mikola1983 | Автоматическая установка приложений | 4 | 29-09-2007 11:05 | |
Автоматическое удаление KAV 5.0 Personal | djoniAg | Автоматическая установка приложений | 3 | 15-02-2007 16:15 | |
[решено] Автоматическое удаление файлов из директорий | BigMac | Microsoft Windows NT/2000/2003 | 19 | 29-05-2005 22:32 |
|