CMD/BAT - [решено] Сделать скрипт с хитрым алгоритмом упаковки файлов

Ответить
 • Просмотры: 1
Аватара пользователя
megaloman

Re: CMD/BAT - [решено] Сделать скрипт с хитрым алгоритмом упаковки файлов

Сообщение megaloman »

Цитата sancher:



в одной папке в отдельные архивы с именем файла
CMD/BAT - [решено] Сделать скрипт с хитрым алгоритмом упаковки файлов






Код:

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

@Echo Off
	Set "BoxIn=Z:\Box_Arc"
	Set "Mask1=*.log"
	Set "Mask2=log*.txt"
	Set "BoxOut=Z:\Box_Out"
	Set ARC="C:\Program Files\7-Zip\7z.exe" a -mx1 -sdel
	Call :MyArc "%BoxIn%"
	FOR /F "usebackq delims=" %%d In (`2^>nul Dir /B /A:D /S "%BoxIn%\"`) DO (
		Call :MyArc "%%d"
	)
Exit /B
:MyArc
	FOR /F "usebackq delims=" %%f In (`2^>nul Dir "%~1\%Mask1%" "%~1\%Mask2%" /B /A:-D`) DO (
		%ARC% "%BoxOut%\%%f.zip" "%~1\%%f"
	)
Exit /B

То же, но короче

Код:

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

@Echo Off
	Set "BoxIn=Z:\Box_Arc"
	Set "Mask1=*.log"
	Set "Mask2=log*.txt"
	Set "BoxOut=Z:\Box_Out"
	Set ARC="C:\Program Files\7-Zip\7z.exe" a -mx1 -sdel
	FOR /F "usebackq delims=" %%f In (`2^>nul Dir /B /A:-D /S "%BoxIn%\%Mask1%" "%BoxIn%\%Mask2%"`) DO (
		>nul %ARC% "%BoxOut%\%%~nxf.zip" "%%f"
	)
Exit /B
Аватара пользователя
sancher

Re: CMD/BAT - [решено] Сделать скрипт с хитрым алгоритмом упаковки файлов

Сообщение sancher »

megaloman, большое спасибо, но видимо я немного неправильно сформулировал задачу.



1. " в один архив с именем папки, содержащей эти файлы "



Я указал папку BoxIn, в качестве BoxOut указал ту же папку.

Что получилось:

1. В папке BoxIn есть папка 1, в которой лежали файлы *.log

В итоге после работы скрипта папка 1 стала пустой (хотя там должен был оказаться файл 1.7z)

2. В папке BoxIn есть папка 2, в которой лежали файлы *.log и папка 1 с файлами log*_.txt

В итоге после работы скрипта папка 2 стала содержать только пустую папку 1.



То есть в итоге у меня в корне BoxIn оказалось 2 архива 1.zip и 2.zip и 2 пустые папки 1 и 2 (папка 2 с пустой папкой 1).



Что должно было получиться:

в папке BoxIn должны были остаться папки 1 и 2,

в папке 1 должен был быть архив 1.zip с файлами *.log.

В папке 2 должен был быть архив 2.zip c фалйами *.log, которые лежали в этой папке,

и папка 1 с архивом 1.zip внутри, содержащим файлы log*.txt



2. " в одной папке в отдельные архивы с именем файла "



Сразу взял короткий вариант и получлось примерно то же самое, что и в пункте 1



То есть в итоге у меня в корне BoxIn оказалось 2 пустые папки 1 и 2 (папка 2 с пустой папкой 1)

и 18 файлов zip с файлами, которые лежали в исходной BoxIn и подпапках.
Аватара пользователя
megaloman

Re: CMD/BAT - [решено] Сделать скрипт с хитрым алгоритмом упаковки файлов

Сообщение megaloman »

Цитата sancher:



Что должно было получиться:
CMD/BAT - [решено] Сделать скрипт с хитрым алгоритмом упаковки файлов




Не должнО. Задача понималась так: имеем некоторую папку с подпапками с файлами, которые надо архивировать и сохранить в другом месте.

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



- в один архив с именем папки, содержащей эти файлы

Код:

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

@Echo Off
	Set "BoxIn=Z:\Box_Arc"
	Set "Mask1=*.log"
	Set "Mask2=log*.txt"
	Set ARC="C:\Program Files\7-Zip\7z.exe" a -mx1 -sdel
	Call :MyArc "%BoxIn%"
	FOR /F "usebackq delims=" %%d In (`2^>nul Dir /B /A:D /S "%BoxIn%\"`) DO (
		Call :MyArc "%%d"
	)
Exit /B
:MyArc
	If Not Exist "%~1\%Mask1%" If Not Exist "%~1\%Mask2%" Exit /B
	Echo %1
	>nul %ARC% "%~1\%~nx1.zip" "%~1\%Mask1%" "%~1\%Mask2%"
Exit /B



- в одной папке в отдельные архивы с именем файла[/i]

Код:

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

@Echo Off
	Set "BoxIn=Z:\Box_Arc"
	Set "Mask1=*.log"
	Set "Mask2=log*.txt"
	Set ARC="C:\Program Files\7-Zip\7z.exe" a -mx1 -sdel
	FOR /F "usebackq delims=" %%f In (`2^>nul Dir /B /A:-D /S "%BoxIn%\%Mask1%" "%BoxIn%\%Mask2%"`) DO (
		Echo "%%f"
		>nul %ARC% "%%f.zip" "%%f"
	)
Exit /B
Аватара пользователя
sancher

Re: CMD/BAT - [решено] Сделать скрипт с хитрым алгоритмом упаковки файлов

Сообщение sancher »

megaloman

Огромное спасибо!

Всё прекрасно работает.

Надеюсь, что эти скрипты пригодятся многим людям.





p.s. отмечу лишь один момент

хотя опция -tzip не используется, по факту получаются архивы zip

поменял расширение на .7z, и архивы уменьшились в размере

поэтому если кто-то решит использовать эти скрипты, то замените .zip на .7z
Ответить

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