Задать вопрос
dimas199862
@dimas199862
frontend и backend

Нужно извлечь файлы из архивов .zip?

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

Нужно очень срочно, спасибо

Вот код который получился у меня
@echo off

set /p input="[.zip] Введите название файла без расширения: "

if not exist = "%cd%\%input%.zip" goto STOP

echo Извлечение архива "%input%.zip" в папку "temp\"....

"%ProgramFiles%\WinRAR\winrar.exe" x -y "%cd%\%input%.zip" "%cd%\temp\"
echo Извлечено!

echo Архивация файла из "temp" в архив "%input%.zpprofile"
if not exist = "%cd%\%input%.zip" goto STOP1

"%ProgramFiles%\WinRAR\winrar.exe" A -y -df -ep "%cd%\%input%.zpprofile" "%cd%\temp"
echo Архивация с заменой прошла успешно! Нажмите любую клавишу...
pause > null
exit
:STOP
echo "Файл %cd%\%input%.zip не найден!"
pause > null

:STOP1
echo "Файл %input%.zpprofile не найден!"
pause > null
  • Вопрос задан
  • 1583 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
Как-то так.
:: Каталог с входными архивами
set "indir=c:\temp"
:: Каталог куда складывать выходные архивы, можно указать тот же, что и в indir
set "outdir=c:\temp\out"
:: Каталог для временных распакованных файлов
set "unarhdir=c:\temp\unarh"
:: Полный путь для запуска архиватора
set "arh=%ProgramFiles%\WinRAR\winrar.exe"
for %%a in ("%indir%\*.zip") do (
  "%arh%" x -y "%%a" "%unarhdir%"
  "%arh%" a -y -df "%%~dpna" "%unarhdir%\*"  
)

Правильно инициализируйте переменные в начале скрипта.
Скрипт не проверял, т.к. winrarом не пользуюсь.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы