Командний рядок 7-Zip для вилучення папки з архіву


16

Я використовую 7-Zip командний рядок , щоб витягти ZIP архів з ім'ям , abc.zipяке є архів з папкою під назвою «блискавка» з трьома текстовими файлами в ньому ( a.txt, b.txtі c.txt).

Моя проблема полягає в тому, коли я витягую її за допомогою наступної команди:

7z e C:\abc\abc.zip -y oC:\abc

7-Zip витягує все, але він не витягує папку «блискавка», він просто витягує a.txt, b.txtі c.txtта поміщає їх в вихід призначення (тобто C:\abc).

Як я можу змусити 7-Zip просто витягнути фактичну папку?

Відповіді:



8

Напевно, перед дефісом повинен бути дефіс o:

-oC:\abc

Також розглянемо -rваріант рекурсії.


1

Мені довелося вирішити подібну проблему. Ось код, який я використав. Цей скрипт отримує папку і розпаковує всі блискавки (і видаляє їх згодом). Хитрість полягає в тому, щоб розпакувати дані в спеціальну папку. Трохи різкий, але це працює ...

@echo off

set SEVEN_ZIP_HOME=C:\Program Files\7-Zip

set TEMPDIR=temp

set WORKING_DIR="%1"

if "%WORKING_DIR%"==""  set WORKING_DIR=%~dp0

cd /d %WORKING_DIR%

if not exist %TEMPDIR% md %TEMPDIR%

for %%i in ("%WORKING_DIR%\*.zip") do call :unzipAndDelete "%%i"

rd %TEMPDIR%

goto :end

:unzipAndDelete 

set ZIP_FILE=%~1

call :extractName %ZIP_FILE%

call "%SEVEN_ZIP_HOME%\7z.exe" e "%ZIP_FILE%" -o./%TEMPDIR%

copy .\%TEMPDIR%\*.* %FILENAME%.log

del .\%TEMPDIR%\*.* /q

del "%ZIP_FILE%"

goto :end

:extractName 

set FILENAME=%~n1
goto :end


:end
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.