Linha de comando 7-Zip para extrair uma pasta de um arquivo

16

Eu estou usando o 7-Zip linha de comando para extrair um ZIP arquivo chamado abc.zipque é um arquivo com uma pasta chamada 'zipper' com três arquivos de texto nele ( a.txt, b.txt, e c.txt).

Meu problema é quando extraí-lo com o seguinte comando:

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

7-Zip extratos tudo, mas não extrai a pasta 'zíper', ele apenas extratos a.txt, b.txte c.txte coloca-los no destino de saída (ou seja, C:\abc).

Como posso fazer com que o 7-Zip extraia apenas a pasta real?

remédios
fonte

Respostas:

9

Provavelmente deve haver um hífen na frente do o:

-oC:\abc

Considere também a -ropção de recursão.

kod
fonte
0

Eu tive que resolver um problema semelhante. Aqui está o código que eu usei. Este script recebe uma pasta e descompacta todos os zips (e os exclui posteriormente). O truque é descompactar os dados em uma pasta especial. Um pouco nervoso, mas funciona ...

@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
user536281
fonte