![]() |
Архивирование и удаление файлов в папке старше n дней
Добрый день, знаю тем подобных много, пересмотрел разные и что накопал хотелось бы доработать. Пожалуйста посмотрите.
Архивирование: Код:
Set Gde1=D:\тест Папка "Почта" в общем доступе, нужны какие то манипуляции для удачного удаления и архивирования, если вдруг кто то открыл файлы? Архиватор не удаляет в "Почте" папки структуры(D:\Почта\Отдел(Экономический, Юридический и тд.)\In(Out)), как и все остальные (ключ -ed). Нашел такой код для удаления пустых папок с исключением: Код:
Set Folder=D:\тест |
Аналогичная проблема: необходимо обходить подкаталоги с проверкой даты файлов с последующим архивированием с помощью 7z, причем каждый файл архивируется отдельно в каталог расположения файла, где имя архива = имя файла. После выполнения архивирования файл удаляется.
Получаю список файлов помощью кода: Код:
forfiles /p D:\ /s /m *.txt /d -180 /C "cmd /c echo @path">d:\temp\arh_file.txt "D:\temp1\20130830000000.txt" "D:\temp2\20130831000000.txt" и т.д. Поэтому решил попробовать просто передавать в другой исполняемый файл имя файла для архивирования: Код:
forfiles /p D:\ /s /m *.txt /d -180 /C "cmd /c D:\temt\1.bat @file" Код:
echo @file |
1. "@file" и "@path" -- это внутренние переменные утилиты "forfiles.exe", и оперировать ими может только сама эта утилита, поэтому их использование за пределами параметра c ключом "/C" команды "FORFILES" невозможно.
2. А вот использовать значения этих переменных, присваиваемые им в процессе работы утилиты, можно, и для этого не нужно ни создавать файл со списком этих значений, ни использовать дополнительные пакетные файлы: Код:
@echo off |
При выполнении скрипта выдает ошибку: "ERROR: No files found with the specified search criteria." :cry: :dont-know.
Хотя файл точно есть, проверял. |
XaHAleX, файлы не найдены по заданным критериям поиска, ну и попробуйте поставить, например, /d -1.
|
Georgio, спасибо, работает! только поменял ключ на удаление: del /q /f
alpap, сорри, недосмотрел. Глупо получилось: проверял скрипт на следующий день, действительно ни один файл уже не попадал в отбор. Окончательная версия кода: Код:
@echo off |
Вложений: 1
Вот написал такой скрипт, не судите строго, может пригодится кому-то
Код:
@echo off |
Коллеги, добрый день.
Подскажите, как написать данный скрипт. Нужна написать bat, который будет архивировать дампы БД по маске KoDB*.bak которые старше "today - 7 days" и перемещать их в папку c архивами (из папки D:\BackUpDB файлы которые уже заархивированы - удалить) Путь к папке где лежат дампы - D:\BackUpDB Путь к папке куда переместить заархивированные дампы - D:\Archive Далее из папки D:\Archive копировать в папку D:\Archive\OLD файлы всех архивов 15 и 30 числа каждого месяца. Использовать WinRAR |
sindrom_89, Давайте уточним:
1. Надо (ежедневно?) архивировать (с удалением заархивированных) файлы D:\BackUpDB\KoDB*.bak старше 7 дней в папку D:\Archive Вопрос: с каким именем, как оно образуется? Или в один архив (опять же, с каким именем?) ? Периодичность архивации (ежедневно?)? 2. Цитата:
Вот вариант, укажите правильно пути
Код:
@Echo Off Как это работает: Лучше всего батник поместить в планировщик и выполнять каждый день (хотя можно и чаще, можно и реже) До начала архивации в батнике анализируется день в дате. Если день, допустим, 1<=ДД<15, или ДД>=15 и нет папки соответственно BoxArc\ГГГГММ01 или BoxArc\ГГГГММ15, то эта папка создаётся и всё содержимое папки BoxOut переносится туда. Далее архивируются файлы из папки BoxIn по указанной маске старше указанного количества дней в папку BoxOut под именем ГГГГММДД.rar Архиватор удаляет исходные файлы. |
megaloman, есть небольшое уточнение
нужно перемещать из папки D:\Archive в папку D:\Archive\OLD только те файлы, у которых в наименовании, после KoDB_2017(год)05(месяц) идет 30 или 15 KoDB_20170530090001 KoDB_20170515090000 Спасибо за интересное решение, очень благодарен! |
sindrom_89,
Цитата:
Опять начинаем с постановки задачи, которую Вы изложили и к которой есть вопросы: Нужно написать bat, который будет архивировать дампы БД по маске KoDB*.bak которые старше "today - 7 days" Откуда берётся дата файла? Из свойств файла или она содержится в имени? Что Вы хотите, чтобы каждый файл по маске архивировался отдельно и имя архива совпало с именем файла ? Подробнее сообщите формат имени файла. Подозреваю, что каждый файл с именем типа: KoDB_ГГГГММДДхххххх.bak должен заархивироваться в файл KoDB_ГГГГММДДхххххх.rar или KoDB_ГГГГММДДхххххх.bak.rar. Это так? Иначе откуда возьмутся заархивированные файлы в папке D:\Archive с именем KoDB_20170530090001 или KoDB_20170515090000? |
Добрый день. Подскажите плиииз.
С копированием я разобрался: xcopy \\192.168.100.100\name\name2\name.bak D:\name /f /y Как мне заставить архивироваться уже скопированный файл name.bak в папку D:\name с дальнейшим удалением исходного name.bak ?? |
Код:
7z a D:\name.zip name.bak -sdel |
А путь к 7z прописывать не нужно? И путь у меня D:\name\name.bak, а архивировать я хочу сам файл в папке а не всю папку.
не правильнее было бы 7z a D:\name\name.zip name.bak -sdel |
Цитата:
Цитата:
|
Время: 07:36. |
Время: 07:36.
© OSzone.net 2001-