CMD/BAT - Перепаковка zip архива с переименованием файла

Ответить
Аватара пользователя
Павел_Будков@vk

CMD/BAT - Перепаковка zip архива с переименованием файла

Сообщение Павел_Будков@vk »

Здравствуйте.



Помогите выполнить такую задачу.



Есть много архивов zip и в каждом всего один файл, но проблема в том, что он без расширения, только имя файла и все.

Нужно перепаковать все архивы с добавлением расширения .doc к файлам в архивах, без изменения имени файла (не обязательное условие), только расширение, и без изменения имени архива.



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



Помогите пожалуйста реализовать.



Спасибо.
Аватара пользователя
megaloman

Re: CMD/BAT - Перепаковка zip архива с переименованием файла

Сообщение megaloman »

Павел_Будков@vk,


Перепаковаваются все архивы в указанной папке. Изменяется указанное расширение файлов на другое.

[spoiler]Код:
[/spoiler]

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

@Echo Off
cls
Set "BoxIn=Z:\Box_In"
Set "ArcType=zip"
Set "InExt="
Set "RenExt=doc"
Set "Arc=C:\Program Files\7-Zip\7z.exe" 
Set "BatTmp=%BoxIn%\%~nx0.tmp"
2>nul Md "%BatTmp%" 
Set "BatBak=%BoxIn%\%~nx0.bak"
2>nul Md "%BatBak%"
>nul 2>&1 Del /Q "%BatTmp%\*.*"
Pushd "%BatTmp%"
If Not %ErrorLevel%==0 (Echo "%BatTmp%" &Pause &Exit /B %ErrorLevel%)
FOR %%a IN ("%BoxIn%\*.%ArcType%") DO (
	Echo %%a
	>nul "%Arc%" e "%%a" 
	FOR %%f IN ("*.%InExt%") DO Ren "%%f" "%%~nf.%RenExt%"
	Move /-Y "%%a" "%BatBak%\"
	>nul 2>&1 Del "%%a" 
 	>nul "%Arc%" a -tzip -sdel "%%a"
)
Popd
2>nul Rd "%BatTmp%" /Q /S
Pause

Укажите свой путь вместо моего в

Set "BoxIn=Z:\Box_In"



Используется архиватор 7z.

В красных строках организуется хранение исходных архивов в .bak папке. Если этого не надо, удалите эти строки





У 7z есть ключ переименования файла в архиве. Но надо явным образом указать имя файла. Я не стал с этим связываться, очевидно, это бы работало бысрее
Аватара пользователя
Павел_Будков@vk

Re: CMD/BAT - Перепаковка zip архива с переименованием файла

Сообщение Павел_Будков@vk »

Спасибо, работает отлично!
Ответить

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