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

Аватара пользователя
Svetochh

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

Сообщение Svetochh »

Цитата megaloman:



Архивирует в фоновом режиме -ibck каждый файл отдельно в zip в указанную папку -afzip

В архиве путь файла исключается -ep

Исходные файлы удаляются -df

При совпадении имён файлов заархивированным останется один из них.
CMD/BAT - [решено] Заархивировать каждый файл в отдельный архив




Скопировал и "Z:\Box_In" "Z:\Box_Arc" поменял на путь к папке

получилось Set "BoxIn=c:\Отечественная фантастика и фэнтези"



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



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



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



P.S. Путь к WinRar совпадает.
Аватара пользователя
megaloman

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

Сообщение megaloman »

Цитата Svetochh:



c:\Отечественная фантастика и фэнтези

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

Жму и... ничего не происходит, просто закрывается окно командной строки.
CMD/BAT - [решено] Заархивировать каждый файл в отдельный архив




Бат-файлы необходимо сохранять в 866 кодировке. У Вас кириллица в пути, поэтому это критично. Похоже, Вы сохранили код редактором типа блокнот, который способен работать только 1251 кодировкой. Под For стоИт Echo и при наличии файлов имена файлов отображаются. Если у Вас кириллица и скрипт в 1251 кодировке, то при запуске скрипта символы в имени папки отображаются в виде "зюкочек" и, естественно, такого пути у Вас нет и отображать нечего.
Аватара пользователя
megaloman

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

Сообщение megaloman »

Если всё же сохранять батник в 1251 кодировке

[spoiler]Код:
[/spoiler]

Код: Выделить всё

@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








Если заархивированный файл сохранять вместо оригинала в той же папке

[spoiler]Код:
[/spoiler]

Код: Выделить всё

@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

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

Сообщение megaloman »

Если всё же сохранять батник в 1251 кодировке

[spoiler]Код:
[/spoiler]

Код: Выделить всё

@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








Если заархивированный файл сохранять вместо оригинала в той же папке

[spoiler]Код:
[/spoiler]

Код: Выделить всё

@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

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

Сообщение Alchiira.Moth@vk »

Цитата Alchiira.Moth@vk:



вот жеж програмысты %)

столкнулся с аналогичной необходимостью - заархивировать пакетно каждый файл в свой архив с тем же именем. как порядочный чел спросил у поисковика, на 2х языках ёпта.

одни заумные неработающие решения кругом в 50+ строк %)

пришлось самому перелопатить мануалы. не благодарите. 1 строка %))
CMD/BAT - [решено] Заархивировать каждый файл в отдельный архив




Вы точно прочитали всё, что требовалось автору, и что было в теме?




Цитата Alchiira.Moth@vk:



"%~dpi%~ni.7z"
CMD/BAT - [решено] Заархивировать каждый файл в отдельный архив






Код:

Код: Выделить всё

"%~dpni.7z"
Аватара пользователя
Iska

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

Сообщение Iska »

Powershell:



Код:

Код: Выделить всё

dir "C:\temp\folder" |% {Compress-Archive "$($_.fullname)" -DestinationPath "$($_.DirectoryName)\$($_.BaseName).zip"}
Аватара пользователя
DJ Mogarych

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

Сообщение DJ Mogarych »

Цитата megaloman:



Бат-файлы необходимо сохранять в 866 кодировке. У Вас кириллица в пути
CMD/BAT - [решено] Заархивировать каждый файл в отдельный архив




спасибо за подсказку, долго не мог решить это
Аватара пользователя
intersk

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

Сообщение intersk »

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



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

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

Сообщение a.k.a. Rasputin »

Где-то я это видел Изображение

Код:

Код: Выделить всё

@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:



И еще, что прописать, чтобы в архиве было сразу содержимое архивируемой папки
CMD/BAT - [решено] Заархивировать каждый файл в отдельный архив




Не понял, в каком виде? Какая иерархия исходных папок?
Аватара пользователя
megaloman

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

Сообщение megaloman »

Цитата megaloman:



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




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




Цитата megaloman:



Пути, имя файла исключений напишите свои.
CMD/BAT - [решено] Заархивировать каждый файл в отдельный архив




попробую)
Ответить

Вернуться в «Скриптовые языки администрирования Windows»