web-dev-qa-db-fra.com

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

J'utilise la ligne de commande 7-Zip pour extraire une archive Zip appelé abc.Zip qui est une archive avec un dossier appelé 'zipper' contenant trois fichiers texte (a.txt, b.txt et c.txt).

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

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

7-Zip extrait tout, mais pas le dossier 'zipper', il extrait simplement a.txt, b.txt et c.txt et les place dans la destination de sortie (c'est-à-dire, C:\abc).

Comment puis-je faire 7-Zip simplement extraire le dossier actuel?

16
meds

Vous devez utiliser 7z x archive.Zip pour extraire avec des chemins complets. Voir: http://sevenzip.sourceforge.jp/chm/cmdline/commands/extract_full.htm

19
iglvzx

Il devrait probablement y avoir un trait d'union devant la o:

-oC:\abc

Considérez également l'option -r pour la récursivité.

8
kod

Je devais 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 nerveux 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
1
user536281