Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Перепаковка zip архива с переименованием файла (http://forum.oszone.net/showthread.php?t=332936)

Павел_Будков@vk 02-02-2018 13:44 2795303

Перепаковка zip архива с переименованием файла
 
Здравствуйте.

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

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

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

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

Спасибо.

megaloman 02-02-2018 18:53 2795385

Павел_Будков@vk,
Перепаковаваются все архивы в указанной папке. Изменяется указанное расширение файлов на другое.
Код:

@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 02-02-2018 20:36 2795402

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


Время: 17:24.

Время: 17:24.
© OSzone.net 2001-