![]() |
Заархивировать каждый файл в отдельный архив
Здравствуйте. Подскажите пожалуйста каким образом можно заархивировать все файлы в текущей папке в отдельные архивы?
Например папка Documents содержит 5 файлов и нужно получить 5 архивов.Формат архивов и архиватор роли не играют, имя архива должно повторять имя файла. Была уже Похожая тема но мне нужен Bat'ник. |
Например, так:
Код:
@echo off |
Спасибо
|
для 7z можно так
for %%i in (%_in%\*.*) do "%_arcpath%\7z" a "%_out%\%%~ni.7z" "%%i" Если что не понятно, можно посмотреть здесь Каждый файл в отдельный архив |
for %%i in (%_in%\*.*) do "%_arcpath%\7z" a "%_out%\%%~ni.7z" "%%i"
это просто отлично, а как быть чтоб он упаковывал каталоги можно по списку, можно и все что есть в текущем каталоге |
чтобы скрипт рекурсивно упаковывал каталоги, нужно добавить ключик -r
|
Цитата:
set _in=d:\1 set _out=d:\2 set _arcpath=c:\Program Files\7-zip for %%i in (%_in%\*) do "%_arcpath%\7z" a -r "%_out%\%%~ni.7z" "%%i" каталоги не берет в расчет ( |
Цитата:
всем спасибо for /d %%i in (%_in%\*) do "%_arcpath%\7z" a "%_out%\%%~ni.7z" "%%i" |
Прошу помочь так как не разбираюсь в вопросе.
Есть: - каталог с вложенными каталогами в которых файлы fb2. - WinRar с настроенным профилем архивирования - отдельно создает zip архив для каждого файла и удаляет исходный файл. Нужно: Рекурсивно проверить все вложенные папки, выделить файлы, запустить упаковку WinRar-ом. Беда в том что папок несколько тысяч и ручками слишком долго заходить в каждую. Хотелось бы батник который сможет это сделать. |
Код:
@Echo Off Скрипт просматривает указанную папку с подпапками Dir Ищет файлы по указанной маске /b /s /a:-d Архивирует в фоновом режиме -ibck каждый файл отдельно в zip в указанную папку -afzip В архиве путь файла исключается -ep Исходные файлы удаляются -df При совпадении имён файлов заархивированным останется один из них. |
Цитата:
получилось Set "BoxIn=c:\Отечественная фантастика и фэнтези" пишет: "для продолжения нажмите любую клавишу" Жму и... ничего не происходит, просто закрывается окно командной строки. Что делаю не так? P.S. Путь к WinRar совпадает. |
Цитата:
|
Если всё же сохранять батник в 1251 кодировке
Код:
@Echo Off Если заархивированный файл сохранять вместо оригинала в той же папке
Код:
@Echo Off |
вот жеж програмысты %)
столкнулся с аналогичной необходимостью - заархивировать пакетно каждый файл в свой архив с тем же именем. как порядочный чел спросил у поисковика, на 2х языках ёпта. одни заумные неработающие решения кругом в 50+ строк %) пришлось самому перелопатить мануалы. не благодарите. 1 строка %)) for /r целевая род директория %i in (маска добавляемых файлов) do 7z a "%~dpi%~ni.7z" -mx9 -sdel "%i" где все, что кириллицей заменить на свои значения каталога и маски в формате, например, c:\work и *.psd соответственно (for - запускает цикл с /r рекурсией по подкаталогам целевой род директории, в котором %i переменная при каждом вхождении файла заданной маски ровняется его имени, включая полный путь к нему. do при каждом срабатывании цикла выполняет команду 7z (переменные среды выполнения настраиваются в винде или же просто вместо 7z прописать путь к исполняемому файлу архиватора, в моем случае 7-zip) с параметром a(учтите, что при работе с каким либо другим архиватором могут быть и другие параметры) - архивировать в архив "%~dpi%~ni.7z", где %~dpi - часть перемененной %i, что содержит только путь к источнику; %~ni - часть переменной %i, что содержит только имя источника без расширения. ну и сервисные переменные в моем конкретном случае - -mx9 -степень сжатия и -sdel -удалить источник. и в-с-ё. больше ничего не нужно, никаких 50+ строк с задаваниями переменных и т.п. чепухи %)) это команда для командной строки. если нужно бат, то то же самое, только кругом двойные %%, где они попадаются |
Цитата:
Цитата:
Код:
"%~dpni.7z" |
Powershell:
Код:
dir "C:\temp\folder" |% {Compress-Archive "$($_.fullname)" -DestinationPath "$($_.DirectoryName)\$($_.BaseName).zip"} |
Цитата:
|
Прошу помощи с батником для архивации каждой папки в отдельный архив с помощью 7zip. Архивы должны иметь то же имя, что и папки
Использую следующее: Код:
for /d %%A in (D:\*) do D:\7-Zip\7z.exe a -tzip -mx=5 -r -pPASS "F:\backup\D\%DATE%_%%~nxA.zip" "%%A" -xr@exclude.txt И еще, что прописать, чтобы в архиве было сразу содержимое архивируемой папки, а не папка и только в ней содержимое? |
Где-то я это видел :)
Код:
@Echo Off &cls Цитата:
|
|
a.k.a. Rasputin, То есть у Вас архивируется папка с файлами в которой нет подпапок
Код:
@Echo Off &cls |
Цитата:
Winrar в этом плане более гибкий и работает на ура. Вот только несколько запароленных бэкапов спустя n-е время перестали открываться, заявляя, что пароль неверный. Поэтому решил попробовать 7zip |
Цитата:
А у Вас, похоже, A:\Папка1\файлы А насчет rar не верю: что-то у Вас накладка с паролями, может, кодовые страницы до архивации и перед разархивацией в системе поменялись |
Цитата:
Вот пример Здесь содержимое папки непосредственно в архиве Скрытый текст
![]() А здесь сначала папка, а потом уже ее содержимое (содержимое может быть абсолютно любым, включая подпапки. Суть, чтобы архив не включал ее) Скрытый текст
![]() Цитата:
Цитата:
|
Красота неописуемая
Код:
@Echo Off &cls Цитата:
|
Цитата:
Фиг его знает, в чем причина. Мне Winrar тоже привычней и как уже писал, более гибок при создании таких вот скриптов p.s. за скрипт спасибо! Проверил, вроде отработал на отлично :Beer: |
Время: 02:29. |
Время: 02:29.
© OSzone.net 2001-