Показать полную графическую версию : [решено] Заархивировать каждый файл в отдельный архив
Здравствуйте. Подскажите пожалуйста каким образом можно заархивировать все файлы в текущей папке в отдельные архивы?
Например папка Documents содержит 5 файлов и нужно получить 5 архивов.Формат архивов и архиватор роли не играют, имя архива должно повторять имя файла. Была уже Похожая тема (http://forum.oszone.net/thread-185028.html) но мне нужен Bat'ник.
SendMessage
12-12-2010, 09:19
Например, так:
@echo off
for %%a in (*) do Rar.exe a -inul "%%a".rar "%%a"
для 7z можно так
for %%i in (%_in%\*.*) do "%_arcpath%\7z" a "%_out%\%%~ni.7z" "%%i"
Если что не понятно, можно посмотреть здесь Каждый файл в отдельный архив (http://stud-work.ru/index.php/kazhdyj-fajl-v-otdelnyj-arkhiv-7z-winrar)
cezar_bd
26-11-2012, 18:38
for %%i in (%_in%\*.*) do "%_arcpath%\7z" a "%_out%\%%~ni.7z" "%%i"
это просто отлично, а как быть чтоб он упаковывал каталоги можно по списку, можно и все что есть в текущем каталоге
чтобы скрипт рекурсивно упаковывал каталоги, нужно добавить ключик -r
cezar_bd
27-11-2012, 10:11
чтобы скрипт рекурсивно упаковывал каталоги, нужно добавить ключик -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"
каталоги не берет в расчет (
cezar_bd
27-11-2012, 12:42
каталоги не берет в расчет ( »
необходимо было чуточку по другому
всем спасибо
for /d %%i in (%_in%\*) do "%_arcpath%\7z" a "%_out%\%%~ni.7z" "%%i"
Svetochh
24-03-2018, 16:08
Прошу помочь так как не разбираюсь в вопросе.
Есть:
- каталог с вложенными каталогами в которых файлы fb2.
- WinRar с настроенным профилем архивирования - отдельно создает zip архив для каждого файла и удаляет исходный файл.
Нужно: Рекурсивно проверить все вложенные папки, выделить файлы, запустить упаковку WinRar-ом.
Беда в том что папок несколько тысяч и ручками слишком долго заходить в каждую.
Хотелось бы батник который сможет это сделать.
megaloman
24-03-2018, 18:32
@Echo Off
cls
Set "BoxIn=Z:\Box_In"
Set "Maska=*.fb2"
Set "BoxArc=Z:\Box_Arc"
Set "Arc="C:\Program Files\WinRAR\WinRAR.exe" a -ep -ibck -afzip -df"
FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Maska%" /b /s /a:-d`) DO (
Echo %%f
%Arc% "%BoxArc%\%%~nxf.zip" "%%f"
)
Pause
Не очень понял, что Вам надо.
Скрипт просматривает указанную папку с подпапками Dir
Ищет файлы по указанной маске /b /s /a:-d
Архивирует в фоновом режиме -ibck каждый файл отдельно в zip в указанную папку -afzip
В архиве путь файла исключается -ep
Исходные файлы удаляются -df
При совпадении имён файлов заархивированным останется один из них.
Svetochh
26-03-2018, 15:23
Архивирует в фоновом режиме -ibck каждый файл отдельно в zip в указанную папку -afzip
В архиве путь файла исключается -ep
Исходные файлы удаляются -df
При совпадении имён файлов заархивированным останется один из них. »
Скопировал и "Z:\Box_In" "Z:\Box_Arc" поменял на путь к папке
получилось Set "BoxIn=c:\Отечественная фантастика и фэнтези"
пишет: "для продолжения нажмите любую клавишу"
Жму и... ничего не происходит, просто закрывается окно командной строки.
Что делаю не так?
P.S. Путь к WinRar совпадает.
megaloman
26-03-2018, 15:39
c:\Отечественная фантастика и фэнтези
пишет: "для продолжения нажмите любую клавишу"
Жму и... ничего не происходит, просто закрывается окно командной строки. »
Бат-файлы необходимо сохранять в 866 кодировке. У Вас кириллица в пути, поэтому это критично. Похоже, Вы сохранили код редактором типа блокнот, который способен работать только 1251 кодировкой. Под For стоИт Echo и при наличии файлов имена файлов отображаются. Если у Вас кириллица и скрипт в 1251 кодировке, то при запуске скрипта символы в имени папки отображаются в виде "зюкочек" и, естественно, такого пути у Вас нет и отображать нечего.
megaloman
27-03-2018, 18:24
@Echo Off
cls
chcp 1251 >nul
Set "BoxIn=Z:\Отечественная фантастика и фэнтези"
Set "Maska=*.fb2"
Set "BoxArc=Z:\Архив книг"
Md "%BoxArc%" 2>nul
Set "Arc="C:\Program Files\WinRAR\WinRAR.exe" a -ep -ibck -afzip -df"
FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Maska%" /b /s /a:-d`) DO (
Echo %%f
%Arc% "%BoxArc%\%%~nxf.zip" "%%f"
)
Pause
@Echo Off
cls
chcp 1251 >nul
Set "BoxIn=Z:\Отечественная фантастика и фэнтези"
Set "Maska=*.fb2"
Set "Arc="C:\Program Files\WinRAR\WinRAR.exe" a -ep -ibck -afzip -df"
FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Maska%" /b /s /a:-d`) DO (
Echo %%f
%Arc% "%%~f.zip" "%%f"
)
Pause
Alchiira.Moth@vk
07-01-2022, 20:12
вот жеж програмысты %)
столкнулся с аналогичной необходимостью - заархивировать пакетно каждый файл в свой архив с тем же именем. как порядочный чел спросил у поисковика, на 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+ строк с задаваниями переменных и т.п. чепухи %))
это команда для командной строки. если нужно бат, то то же самое, только кругом двойные %%, где они попадаются
вот жеж програмысты %)
столкнулся с аналогичной необходимостью - заархивировать пакетно каждый файл в свой архив с тем же именем. как порядочный чел спросил у поисковика, на 2х языках ёпта.
одни заумные неработающие решения кругом в 50+ строк %)
пришлось самому перелопатить мануалы. не благодарите. 1 строка %)) »
Вы точно прочитали всё, что требовалось автору, и что было в теме?
"%~dpi%~ni.7z" »
"%~dpni.7z"
DJ Mogarych
08-01-2022, 11:31
Powershell:
dir "C:\temp\folder" |% {Compress-Archive "$($_.fullname)" -DestinationPath "$($_.DirectoryName)\$($_.BaseName).zip"}
Бат-файлы необходимо сохранять в 866 кодировке. У Вас кириллица в пути »
спасибо за подсказку, долго не мог решить это
a.k.a. Rasputin
18-11-2023, 16:41
Прошу помощи с батником для архивации каждой папки в отдельный архив с помощью 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
Но проблема в том, что хотя в файле exclude.txt и указаны папки, которые не надо архивировать, 7zip все равно создает пустые архивы с именами этих папок. И без разницы, указано ли это через файл-исключение или просто прописано в скрипте
И еще, что прописать, чтобы в архиве было сразу содержимое архивируемой папки, а не папка и только в ней содержимое?
megaloman
18-11-2023, 16:46
Где-то я это видел :)@Echo Off &cls
Set "BoxIn=A:"
Set "BoxArc=Z:\backup\D"
Set "Exclude=%~dpn0.exl"
Set Arc="C:\Program Files\7-Zip\7z.exe" a -tzip -mx=5 -r -ppass
If Not Exist "%BoxIn%\" (Echo !!! Folder "%BoxIn%" not found &Pause &Exit /B 2)
For /F "usebackq delims=" %%d In (`2^>nul Dir /B /A:D "%BoxIn%\" ^| FindStr /I /L /V /G:"%Exclude%"`) Do (
>nul %Arc% "%BoxArc%\%DATE%_%%~nxd.zip" "%BoxIn%\%%d"
)
pause
Exit /B
Пути, имя файла исключений напишите свои.И еще, что прописать, чтобы в архиве было сразу содержимое архивируемой папки »Не понял, в каком виде? Какая иерархия исходных папок?
a.k.a. Rasputin
18-11-2023, 16:54
Не понял, в каком виде? »
допустим, папка apk с файлами. На выходе имеем архив apk.zip в нем папка apk а в ней уже файлы. А хочется apk.zip и в нем сразу же файлы
Пути, имя файла исключений напишите свои. »
попробую)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.