![]() |
Сделать скрипт с хитрым алгоритмом упаковки файлов
Всем здравствуйте.
Буду крайне признателен если кто-то сможет помочь. Есть папка, в которой куча разных подпапок, часть из которых называется имя_logs. Задача: нужно зайти скриптом в каждую из этих подпапок имя_logs, в которой лежат файлы с расширениями log, zip, файлы zip (старые) не трогать, а файлы log необходимо упаковать в один файл, точнее не в один а в несколько. Нужно собрать файлы по году (взять год времени создания файла), имя результирующего архива: год.zip то есть если есть файлы log, созданные в 2015, 2016 годах, то все log файлы за 2015 год собрать в один архив 2015.zip, а за 2016 в 2016.zip. Да, самое главное. Нужно не брать последний лог файл (за текущий день), а брать начиная со вчерашнего и ранее. И будет здорово, если можно реализовать дозапись новых файлов в 2017 году. То есть пакуем все файлы за 2017 год кроме сегодняшнего в файл 2017.zip, если запустим скрипт на следующий день, то добавляем оставшийся файл log в архив 2017.zip. Да, идеально будет, если использовать 7zip. Надеюсь всё понятно написал. |
Цитата:
|
sancher, Экий Вы путаник :)
1. Нужно собрать файлы по году (взять год времени создания файла), имя результирующего архива: год.zip. Куда поместить этот архив. 2. Не кажется ли Вам, что заархивированные файлы надо удалить? 3. А файлы в архиве хранить с путями? 4. имя результирующего архива: год.zip - а формат архива тоже zip?. Не уверен, но, похоже, 7zip не умеет форматировать в формате Zip. И вообще, с RARом было бы проще. |
Iska, megaloman, прошу прощения, словесность - не мой конёк )
megaloman, все вопросы по делу, спасибо. 1. Архив оставить в исходной папке имяпапки_log 2. Заархивированные файлы log действительно нужно удалить после успешного сжатия. 3. Нет, файлы нужно хранить без путей. Открыл архив, а внутри просто файлы. 4. Формат архива zip, который можно просмотреть встроенными средствами Windows. Если правильно помню, у 7zip это опция -tzip. C rar-ом проще, но он денег стоит ) |
Код:
@Echo Off |
megaloman, большое спасибо
есть вопрос Set "BoxIn=Z:\Data" - Z:\Data - это корневая папка, в которой мы работаем? если так, то почему BoxIn нигде дальше не используется? я запустил ваш скрипт в таком виде, но он ничего не делает |
sancher, Виноват, был невнимателен. Код исправил в двух местах. Пропишите вместо Z:\Data "папку, в которой куча разных подпапок, часть из которых называется имя_logs".
|
megaloman, супер!
мегабольшое человеческое спасибо за вашу помощь! я бы такой скрипт рожал минимум день-два, а может и больше а может вообще бы не осилил так что очень сильно выручили ещё раз благодарю! |
Уважаемый megaloman, помогите, пожалуйста, с другой версией скрипта.
У меня есть папка, в которой большое число других папок, содержащих папки и файлы. Папки имеют названия на русском и на английском языке. Задача: нужно скриптом зайти в каждую папку-подпапку (во все папки в дереве) и архиватором 7zip с уровнем сжатия 1-Скоростной сжать файлы *.log и log*.txt в один архив с именем папки, содержащей эти файлы. После чего исходные файлы удалить. И было бы здорово иметь 2 версию этого же скрипта: архивировать файлы *.log и log*.txt в одной папке в отдельные архивы с именем файла, после чего исходные файлы удалить. |
Цитата:
Код:
@Echo Off |
Цитата:
Код:
@Echo Off Код:
@Echo Off |
megaloman, большое спасибо, но видимо я немного неправильно сформулировал задачу.
1. " в один архив с именем папки, содержащей эти файлы " Я указал папку BoxIn, в качестве BoxOut указал ту же папку. Что получилось: 1. В папке BoxIn есть папка 1, в которой лежали файлы *.log В итоге после работы скрипта папка 1 стала пустой (хотя там должен был оказаться файл 1.7z) 2. В папке BoxIn есть папка 2, в которой лежали файлы *.log и папка 1 с файлами log*_.txt В итоге после работы скрипта папка 2 стала содержать только пустую папку 1. То есть в итоге у меня в корне BoxIn оказалось 2 архива 1.zip и 2.zip и 2 пустые папки 1 и 2 (папка 2 с пустой папкой 1). Что должно было получиться: в папке BoxIn должны были остаться папки 1 и 2, в папке 1 должен был быть архив 1.zip с файлами *.log. В папке 2 должен был быть архив 2.zip c фалйами *.log, которые лежали в этой папке, и папка 1 с архивом 1.zip внутри, содержащим файлы log*.txt 2. " в одной папке в отдельные архивы с именем файла " Сразу взял короткий вариант и получлось примерно то же самое, что и в пункте 1 То есть в итоге у меня в корне BoxIn оказалось 2 пустые папки 1 и 2 (папка 2 с пустой папкой 1) и 18 файлов zip с файлами, которые лежали в исходной BoxIn и подпапках. |
Цитата:
Если заархивированные файлы надо оставить в тех же папках, где находились исходные, то: - в один архив с именем папки, содержащей эти файлы Код:
@Echo Off - в одной папке в отдельные архивы с именем файла Код:
@Echo Off |
megaloman
Огромное спасибо! Всё прекрасно работает. Надеюсь, что эти скрипты пригодятся многим людям. p.s. отмечу лишь один момент хотя опция -tzip не используется, по факту получаются архивы zip поменял расширение на .7z, и архивы уменьшились в размере поэтому если кто-то решит использовать эти скрипты, то замените .zip на .7z |
Время: 07:54. |
Время: 07:54.
© OSzone.net 2001-