Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Заархивировать каждый файл в отдельный архив

Ответить
Настройки темы
CMD/BAT - [решено] Заархивировать каждый файл в отдельный архив

Аватара для Ins_16

Пользователь


Сообщения: 64
Благодарности: 11


Конфигурация

Профиль | Отправить PM | Цитировать


Здравствуйте. Подскажите пожалуйста каким образом можно заархивировать все файлы в текущей папке в отдельные архивы?
Например папка Documents содержит 5 файлов и нужно получить 5 архивов.Формат архивов и архиватор роли не играют, имя архива должно повторять имя файла. Была уже Похожая тема но мне нужен Bat'ник.

Отправлено: 17:59, 11-12-2010

 

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата megaloman:
Архивирует в фоновом режиме -ibck каждый файл отдельно в zip в указанную папку -afzip
В архиве путь файла исключается -ep
Исходные файлы удаляются -df
При совпадении имён файлов заархивированным останется один из них. »
Скопировал и "Z:\Box_In" "Z:\Box_Arc" поменял на путь к папке
получилось Set "BoxIn=c:\Отечественная фантастика и фэнтези"

пишет: "для продолжения нажмите любую клавишу"

Жму и... ничего не происходит, просто закрывается окно командной строки.

Что делаю не так?

P.S. Путь к WinRar совпадает.

Отправлено: 15:23, 26-03-2018 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Цитата Svetochh:
c:\Отечественная фантастика и фэнтези
пишет: "для продолжения нажмите любую клавишу"
Жму и... ничего не происходит, просто закрывается окно командной строки. »
Бат-файлы необходимо сохранять в 866 кодировке. У Вас кириллица в пути, поэтому это критично. Похоже, Вы сохранили код редактором типа блокнот, который способен работать только 1251 кодировкой. Под For стоИт Echo и при наличии файлов имена файлов отображаются. Если у Вас кириллица и скрипт в 1251 кодировке, то при запуске скрипта символы в имени папки отображаются в виде "зюкочек" и, естественно, такого пути у Вас нет и отображать нечего.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:39, 26-03-2018 | #12


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Если всё же сохранять батник в 1251 кодировке
Код: Выделить весь код
@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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 27-03-2018 в 18:34.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:24, 27-03-2018 | #13


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


вот жеж програмысты %)
столкнулся с аналогичной необходимостью - заархивировать пакетно каждый файл в свой архив с тем же именем. как порядочный чел спросил у поисковика, на 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+ строк с задаваниями переменных и т.п. чепухи %))

это команда для командной строки. если нужно бат, то то же самое, только кругом двойные %%, где они попадаются

Отправлено: 20:12, 07-01-2022 | #14


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Alchiira.Moth@vk:
вот жеж програмысты %)
столкнулся с аналогичной необходимостью - заархивировать пакетно каждый файл в свой архив с тем же именем. как порядочный чел спросил у поисковика, на 2х языках ёпта.
одни заумные неработающие решения кругом в 50+ строк %)
пришлось самому перелопатить мануалы. не благодарите. 1 строка %)) »
Вы точно прочитали всё, что требовалось автору, и что было в теме?

Цитата Alchiira.Moth@vk:
"%~dpi%~ni.7z" »
Код: Выделить весь код
"%~dpni.7z"

Отправлено: 23:54, 07-01-2022 | #15


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6493
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Powershell:
Код: Выделить весь код
dir "C:\temp\folder" |% {Compress-Archive "$($_.fullname)" -DestinationPath "$($_.DirectoryName)\$($_.BaseName).zip"}

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 11:31, 08-01-2022 | #16


Пользователь


Сообщения: 97
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата megaloman:
Бат-файлы необходимо сохранять в 866 кодировке. У Вас кириллица в пути »
спасибо за подсказку, долго не мог решить это

Отправлено: 09:38, 29-03-2023 | #17


Пользователь


Сообщения: 54
Благодарности: 2

Профиль | Отправить PM | Цитировать


Прошу помощи с батником для архивации каждой папки в отдельный архив с помощью 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 все равно создает пустые архивы с именами этих папок. И без разницы, указано ли это через файл-исключение или просто прописано в скрипте

И еще, что прописать, чтобы в архиве было сразу содержимое архивируемой папки, а не папка и только в ней содержимое?

Отправлено: 16:41, 18-11-2023 | #18


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Где-то я это видел
Код: Выделить весь код
@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:
И еще, что прописать, чтобы в архиве было сразу содержимое архивируемой папки »
Не понял, в каком виде? Какая иерархия исходных папок?

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 18-11-2023 в 16:53.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:46, 18-11-2023 | #19


Пользователь


Сообщения: 54
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата megaloman:
Не понял, в каком виде? »
допустим, папка apk с файлами. На выходе имеем архив apk.zip в нем папка apk а в ней уже файлы. А хочется apk.zip и в нем сразу же файлы

Цитата megaloman:
Пути, имя файла исключений напишите свои. »
попробую)

Отправлено: 16:54, 18-11-2023 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Заархивировать каждый файл в отдельный архив

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Копирование строк в отдельный файл по условию Seryoga204 Скриптовые языки администрирования Windows 26 24-08-2016 23:33
CMD/BAT - [решено] Поиск строк с указанным словом и копирование их в отдельный файл Maartimus Скриптовые языки администрирования Windows 2 13-07-2010 20:25
Общее - [решено] Экспорт издания в отдельный WIM-файл САШOК Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 7 03-06-2009 01:41
Вывод размера папки в отдельный файл скриптом Whiteee Microsoft Windows NT/2000/2003 1 16-07-2008 14:06
[решено] Архивация каждого файла в отдельный архив vadimiron Общий по Linux 10 15-08-2007 14:24




 
Переход