Другое > Hard'n'Soft
пакетное архивирование
(1/1)
urasan:
Итак, задача:
Имеется много папок с файлами (без подпапок), надо сделать из них архивы, но так, чтоб внутри этих архивов никаких папок не было, только файлы. И все это автоматом, с сохранением имен всех папок.
Никогда таким не занимался и не знаю, какая нужна прога. Если кто знает, напишите не только название, но и последовательность действий. Заранее спасибо
HoRRoR:
Можно bat-сценарий написать (или bash), который обходит папки и говорит пакующей утилите что делать. Под вин32 ещё вариант - vbscript, там возможностей больше, чем в bat, и работает он тоже нативно.
urasan:
Ну да, а перед этим выучиться на программиста, чтобы знать, что такое bat (кроме летучей мыши) и как писать сценарии. Мне б что-нибудь попроще... :-\
HoRRoR:
В какие архивы тебе надо паковать (zip/rar/7z/...)? Напишу.
GManiac:
Пример для рара. Для 7-зипа либо надо копать гуи, либо в опциях ковыряться.
HoRRoR:
Пример скрипта для rar, под zip/7z переделать нетрудно:

--- Код: ---@echo off

rem Путь к архиватору
set arc=C:\Program Files\WinRar\rar.exe

rem Путь к папке с исходными директориями
set src=C:\src

rem Путь к папке, куда будут помещены выходные файлы
set dest=C:\dest

rem Расширение выходных файлов
set ext=rar

rem -------------------------------------

cd %src%
for /D %%d in (*) do (
echo Compressing %%d.rar...
if exist "%dest%\%%d.%ext%" del /Q /F "%dest%\%%d.%ext%"
"%arc%" a -ep1 -m5 "%dest%\%%d.%ext%" "%src%\%%d" > NUL
)

echo Done!


--- Конец кода ---
urasan:
GManiac, думаю, это то, что надо, попробую.
HoRRoR, ешкин кот, я даже не знаю, куда это вставить. Но, все равно, спасибо большое!
Dr.Yukon:
Во имя Ктулху, пусть оживёт этот тред!

Мдя, только нашёл тему, в которой есть чем похвалиться в области скриптописания (Автоит), а тут готовый батник  :lol:

Хотя некоторые проблемы в нём есть. Если в названиях папок есть хоть один иероглиф или процент - проблем не избежать. Неизбежная проблема DOS. Кроме того, в батник придётся лазить каждый раз, чтобы поправить входящую и исходящую папки. Можно было бы вынести в prompt-запросы к пользователю *). Также на строке "if exist" производится деструктивное действие - если архив уже существует, вместо чтоб добавить к новому архиву счётчик, убивается старый архив  0_0

*) типа такого:
SET /P AREYOUSURE=Are you sure (Y/[N])?
IF /I "%AREYOUSURE%" NEQ "Y" нужные действия
Навигация
Главная страница сообщений

Перейти к полной версии