![]() |
Автоматическое удаление файлов
День добрый. Поскажите решение данной задачи :раз в сутки очистить папку "Obmen". Заархивировать и скопировать содержимое папки в паку "Arh" (на всякий случай ) и удалить содержимое (папки и файлы). Желательно с помощью bat-ника
Спасибо. |
посмотрите команды copy и del
консольно архивировать может любой современный архиватор |
Идея решения - используем распространённый архиватор 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, напишите правильный к нему путь |
И лучше использовать бесплатный 7-zip
|
Можно поподробней объяснить, что значит строки:
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%\*.* Не понятно что за числа |
Системная переменная %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 |
Цитата:
Для подробностей выполните Set /? Цитата:
Цитата:
|
Вот VBS скрипт, решающий похожую задачу, но с архивированием в 7z
Код:
' Перемещаем файлы старше указанного количества дней по маске |
а как сделать чтобы батник работал с файлами только старше 3х месяцев, остальные файлы не трогал?
например сейчас сентябрь, батник бы заархивировал и удалил бы потом все файлы которые были созданы до июня |
Запустите WinRar, вызовите справку.
Цитата:
|
Цитата:
Код:
@Echo Off |
А как сделать так чтобы структура папок оставалась, а удалялись(архивировались) только файлы в папках и подпапках. удаление ключа -tb это же не выход.
|
К вопросу о ключах WinRAR: архивирую офис. документы обновлением для быстроты
Код:
rar.exe u -m0 -r -ri15 -n*.doc -n*.xls -n*.txt c:\docs.rar *.* (в принципе можно и 7z) |
Fen1kc16, если модернизировать мой предыдущий код, то, чтобы структура папок оставалась (при условии, что у папок нет каких-то особых доступов и параметров безопасности)
Код:
@Echo Off Код:
@Echo Off |
Я немного по другому решил эту проблему просто добавил в твой предыдущий скрипт одну строку.
Код:
Set Gde=F:\Desktop\obmen В 2003 server дата выводится как dd/mm/yy, из-за этого винрар не может создать архив, как с этим бороться? |
Fen1kc16,
1. У меня в XP forfiles нет, поэтому для совместимости я им не пользуюсь. 2. Если у вас дата dd/mm/yy то можно сделать (строку взял вашу и изменил) Set TDate=20%date:~6,2%%date:~3,2%%date:~0,2% То есть я добавил 20 чтобы вместо Вашего 11 получилось 2011. По идее, рар должен такое взять (я не проверял, это почти очевидно). Вам за 88 лет работы менять ничего не придётся. :lol: То же, но будет работать и для формата дд.мм.гггг Set TDate=20%date:~-2%%date:~3,2%%date:~0,2% То есть вырезаю два последних символа в дате 3. В 2003 форматы отображения, в частности, даты, настраивается: Региональные параметры - Настройка - Дата - Там можно выставить формат даты как Вам нравится. Я предпочитаю дд.мм.гггг |
Цитата:
|
Добрый вечер. прочитал эту тему. но сообразить не могу все же...
необходим батник стартующий из автозапуска, и архивирующий папу расположенную в корне диска C:\ в каталог лежащий в том же диске. архиватор бесплатный 7zip. помогите пожалуйста кодом. |
Код:
@ "%ProgramFiles%\7-Zip\7z.exe" a "C:\Куда архивировать\Архив.7z" "C:\Некая папка\" |
спасибо.
не думал что настолько простой батник .. здесь же помоему не хватает ключевых команд ... |
Цитата:
|
не слушайте меня!
спасибо вам. |
тут возникла задача на автоматическое удаление файлов старше 7 дней из определённого каталога и определённого расширения и эту задачу надо производить регулярно (раз в сутки) , ну допустим с регулярностью проблема решается добавлением батника в планировщик задач. а вот команда del не может решить всех поставленных задач... может кто чего подскажет. не используя стороннего ПО.
|
mskam, поищите для начала по форуму - таких тем уже сотня наберется
|
Время: 02:01. |
Время: 02:01.
© OSzone.net 2001-