Спасибо, Разобрался - просто распаковщика, под рукой не было. С 7zip скрипт работает, так все-же, как помещать готовые архивы в те-же папки, что и исходники? или для этого лучше сделать отдельный вариант скрипта?Flasher писал(а):Установка для 7zip - это всего лишь распаковка. Достаточно в папку в TC скинуть файлы dll. sfx, 7zip.exe - и будет портабельный вариант
Пакетное архивирование
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Я же написал как. Ошибся насчёт файлов, всё будет ок, исправил по ссылке. В самом коде не меняю, т.к. считаю такой подход неприемлемым в качестве общего.
Пардон, думал, что с полными путями не работает. Надо убрать красное в строкеFlasher писал(а):С rar, увы, придётся смириться.
В посте с кодом поправил.Param = "a " & S & " """ & Path & Name & """ """ & FSO.GetFileName(F) & """"
Последний раз редактировалось Flasher Пт авг 05, 2011 17:45, всего редактировалось 1 раз.
Вот теперь другое дело, а то я чувствовал, что что-то, здесь не так! Ну главное - теперь все работает, заодно и с 7zip разобрался. Не проверял пока, на больших файлах, но думаю тоже будет порядок, если что - напишу. Большое спасибо.Flasher писал(а):Пардон, думал, что с полными путями не работает. Надо убрать красное в строке
Добавлено спустя 1 час 27 минут:
И еще вопрос, вот здесь
при заменеFlasher писал(а):Я же написал как
Код: Выделить всё
Param = "a """ & PF & "" & Name & """" & Str & S
Else
Pr = RAR
Param = "a -ep1" & S & " """ & PF & "" & Name & """" & StrЯ писал как это исправить.shveicar писал(а):глубина вложенности-1, если больше, то идет упаковка с папками
Не понял. Правильная логика: папка одна - имя одно. Неправильная логика: файлов много - имя одно.shveicar писал(а):создаются архивы с именами папок а не самих- файлов, а это не есть хорошо
Опять путано. Глубина вложенности может быть разная, и то, что "больше одного" не означает, что речь идёт о самой последней по глубине.shveicar писал(а):и по поводу глубины вложенности-( можно ли это изменить) хотелось бы создавать архивы с именами файлов в папках с глубиной вложенности больше одного.(или, проще говоря- упаковывать файлы из самой последней по глубине, папки)
Во всяком случае сейчас пока на рекурсию времени нет, потом как-нибудь.
С этим ясно, но я говорю, что имя архива берется не из имени файла,( по логике), а из имени папки. Пример - каталог с вложенными файлами под курсором, выделяем его, жмем кнопку,(вариант скрипта сFlasher писал(а):Не понял. Правильная логика: папка одна - имя одно. Неправильная логика: файлов много - имя одно.
Код: Выделить всё
For Each FF in PF.SubFolders
Str = Str & " """ & FF & """"
Next
If Len(Filt) > 0 Then Str = ""Какого файла? Файлов много в папке! И все они упаковываются в один архив. Тут логика самая что ни на есть верная.shveicar писал(а):но я говорю, что имя архива берется не из имени файла,( по логике), а из имени папки.
Это уже другая реализация. См. название скрипта.shveicar писал(а):создаются внутри папки - архивы, с именами файлов
Смотрю и думаю, где-же в названии это прописано?Flasher писал(а):Это уже другая реализация. См. название скрипта.
Тогда стоило назвать так-Упаковать каждый файл или содержимое каждой папки в отдельный архив
...Ну если будет возможность, добавьте пожалуйста реализацию - Упаковать каждый файл в свой архив.Упаковать содержимое каждой папки в отдельный архив
Максимум, что тут стоило - это поменять "или" на "и", хотя это сути не меняет.shveicar писал(а):Тогда стоило назвать так-
Она уже есть. Упаковывается каждый выделенный файл в свой архив. Выше обсуждалась правка касаемо именно отдельных файлов (поиск/BranchView).shveicar писал(а):Ну если будет возможность, добавьте пожалуйста реализацию - Упаковать каждый файл в свой архив
Да, но только архивы создаются не там где исходные файлы, ну да ладно, буду потом использовать скрипт перемещения, чтобы вернуть их туда где лежат исходники (хотя удалить исходники, после архивации проще чем настроить перемещение). Конечно скрипт удобный, но дополнения бы ему не помешали, ну да ладно, подожду рекурсии. Спасибо.Flasher писал(а):Выше обсуждалась правка касаемо именно отдельных файлов (поиск/BranchView)
В обычном режиме достаточно в качестве пути назначения прописать "%P" - приведено в примерах, а для остальных режимов нужно послеshveicar писал(а):Да, но только архивы создаются не там где исходные файлы.
Код: Выделить всё
If FSO.FileExists(F) ThenКод: Выделить всё
N = FSO.GetFile(F)По рекурсии лучше отдельный скрипт написать, например, "Рекурсивная пофайловая упаковка", если такой подход вообще устроит. Каждый файл на любой глубине выделенных папок будет паковаться в отдельный архив рядом с исходником.shveicar писал(а):ну да ладно, подожду рекурсии
Спасибо за совет, но у меня получается "замкнутый круг". Изначально моя задача была вроде бы простой - выделить 30 каталогов со вложенными папками в которых находятся видео файлы, и упаковать их в то-же место где и исходники, причем каждый видео файл в свой архив, иначе размер архива - слишком большой, -(почему-то это считается кривым подходом, ну да ладно), далее через "поиск" я находил все файлы которые помещались в архивы и удалял их (в принципе, удаление можно использовать для каждого файла при архивации, но для страховки проще так). Вот в принципе и все. Здесь-же получился другой вариант, и вот я его пытаюсь приспособить под свои нужды и получается - то имена архивов берутся из папок, то (при тестировании) все файлы помещаются все в один архив, а теперь вот и с путями любые варианты кроме того который нужен. Жаль, что я изначально не полностью обрисовал Т.З. Ну да ладно,
Рад бы сплясать, да башмаки жмут!Flasher писал(а):shveicar, пляши!
По выделенным папкам я пока ничего не предлагал, только по файлам. См. опять же контекст обсуждаемого. Если именно о выделенных файлах речь, то в один архив могут положиться только те файлы, которые лежать в одной папке и имеют одно базовое имя. Чтобы этого не происходило можно в скрипте Bas поменять на Fil, тогда в качестве базовых имён архивов будут подставляться полные имена файлов.shveicar писал(а):Здесь-же получился другой вариант, и вот я его пытаюсь приспособить под свои нужды и получается - то имена архивов берутся из папок, то (при тестировании) все файлы помещаются все в один архив, а теперь вот и с путями любые варианты кроме того который нужен.
А вот и не ладно. На будущее сообщаю, что ТЗ надо формировать изначально полностью со всеми недосказанностями, поправками и желательно с использованием верной терминалогии. Сухо, последовательно и понятно. Если не получается грамотно выстроить картинку желаемого, лучше переспросить в личке. Любой необжиданно родившийся нюанс может повлиять на картину кода, значительную часть которого придётся перекраивать.shveicar писал(а):Жаль, что я изначально не полностью обрисовал Т.З. Ну да ладно,
Поэтому логичным было бы по теме рекурсии изложить попунктно всё необходимое: фильтрация, с папками/без, места складирования архивов (общее или в соответствии с текущим местоположением), глубина вложенности.
Добрый день. Виду того, что Автор скрипта в этой теме считает свою задачу исчерпывающей. Мне остается надеется, что в новой теме, для моей просьбы будет создан скрипт, возможно аналогичный этому скрипту. На всякий случай создаю отдельную тему Рекурсивная пофайловая упаковка". Заранее благодарен.
Последний раз редактировалось shveicar Сб авг 06, 2011 20:35, всего редактировалось 1 раз.
Моя задача будет исчерпана до тех пор пока все написанное мной перестанет игнорироваться. Об остальном я уже написал выше. В частности:shveicar писал(а):Добрый день. Виду того, что Автор скрипта считает свою задачу исчерпывающей
Flasher писал(а):По рекурсии лучше отдельный скрипт написать, например, "Рекурсивная пофайловая упаковка", если такой подход вообще устроит. Каждый файл на любой глубине выделенных папок будет паковаться в отдельный архив рядом с исходником.