Ligne de commande 7-Zip pour extraire un dossier d'une archive

16

J'utilise le 7-Zip ligne de commande pour extraire une ZIP archive appelé abc.zipqui est une archive avec un dossier appelé « fermeture éclair » avec trois fichiers texte dans ce ( a.txt, b.txtet c.txt).

Mon problème est quand je l'extrait avec la commande suivante:

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

Extraits 7-Zip tout, mais il n'extrait pas le dossier « zip », il seulement des extraits a.txt, b.txtet c.txtet les met dans la destination de sortie (qui est, C:\abc).

Comment puis-je faire 7-Zip juste extraire le dossier réel?

Médicaments
la source

Réponses:

9

Il devrait probablement y avoir un tiret devant o:

-oC:\abc

Considérez également l' -roption de récursivité.

kod
la source
0

J'ai dû résoudre un problème similaire. Voici le code que j'ai utilisé. Ce script reçoit un dossier et décompresse tous les zips (et les supprime ensuite). L'astuce consiste à décompresser les données dans un dossier spécial. Un peu énervé mais ça marche ...

@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
la source