PDA

Показать полную графическую версию : [решено] Перепаковка архивов с условием


VitHAK
14-11-2010, 08:55
Есть папка с множеством архивов zip. Имена всех архивов разные, но для каждого архива типу "Имя архива.zip" есть архив "Имя архива.dbf.zip". Нужно чтоб скрипт искал архивы "Имя архива.dbf.zip", распаковал их в папку Data\Имя архива\DBF. После чего брал архив "Имя архива.zip" с таким же именем как "Имя архива.dbf.zip" и распаковал их в папку Data\Имя архива\Text. После завершение распаковки архивов нужно запаковать все в папке Data в архивы типу "Имя архива.base.7z"

Помогите пожалуйста решить эту задачу.
СПАСИБО!!!

El Sanchez
14-11-2010, 13:48
VitHAK,

@Echo Off
Set Arch=C:\Program Files\7-zip\7z.exe
Set Source=C:\Source
Set Output=C:\Output

For /F "Tokens=1* Delims=." %%A In ('Dir /B /S "%Source%\*.dbf.zip"') Do (
"%Arch%" x -y -o"%%~dpAData\%%~nA\DBF" "%%A.%%B"
"%Arch%" x -y -o"%%~dpAData\%%~nA\Text" "%%A%%~xB"
"%Arch%" a "%Output%\%%~nA.base.7z" "%%~dpAData\*"&&RD /S /Q "%%~dpAData" 2>nul
)

VitHAK
14-11-2010, 14:51
El Sanchez,
Не работает, говорит "не удается найти указаний файл"

El Sanchez
14-11-2010, 16:51
Set Arch=C:\Program Files\7-zip\7z.exe
Set Source=C:\Source
Set Output=C:\Output »
VitHAK, пути свои прописали?

VitHAK
14-11-2010, 17:25
El Sanchez, Да

VitHAK
14-11-2010, 18:16
Вот решение моей задачи, спасибо специалистам с форума ru-board


@echo off

for %%a in (*.dbf.zip) do call:repack "%%~na"

exit

:repack
7za x -o"Data\%~n1\dbf" "%~n1.dbf.zip"
7za x -o"Data\%~n1\text" "%~n1.zip"

pushd "Data\%~n1"
..\..\7za.exe a -r "..\..\Out\%~n1.base.7z" "*"
popd




© OSzone.net 2001-2012