Comment décompresser un fichier en utilisant la ligne de commande? [fermé]

164

Quelles commandes peuvent être utilisées via la ligne de commande pour décompresser un fichier?
De préférence quelque chose intégré à Windows ou à des outils open source / gratuits.

Chris Sainty
la source
1
Une recherche rapide sur Google a révélé cela . Cela fonctionne sous Windows (il n'est pas clair si vous voulez dire que vous utilisez Windows ou si le système d'exploitation est en fait DOS).
Jeremy
26
À moins que vous n'exécutiez une version vraiment ancienne de Windows (ME ou antérieure), la ligne de commande Windows n'est pas DOS. :)
Tyler McHenry
Le moyen le plus simple de décompresser un fichier consiste à utiliser unzip.exe. Exemple: unzip.exe source.zip -d rép_cible. URL: stahlworks.com/dev/index.php?tool=zipunzip
zappee
2
Windows avec Powershell5 peut le faire de manière native avec Exand-Archiveet Compress-Archive. Honneur là où l'honneur est dû.
LosManos
1
décompressez [filename] .zip
Amranur Rahman

Réponses:

53

Vous pouvez utiliser:

http://membrane.com/synapse/library/pkunzip.html

ou

7zip: http://www.7-zip.org/download.html

Zip d' octet gratuit : http://www.freebyte.com/fbzip/

ou infozip: http://infozip.sourceforge.net/

Red33mer
la source
11
La première URL répertoriée est une véritable application 16 bits, ne fonctionne donc pas sur les systèmes d'exploitation x64. Juste un avertissement.
Mark Henderson
38
si vous êtes sous Windows 7 ou 10 avec PowerShell, vous pouvez utiliser:powershell.exe -NoP -NonI -Command "Expand-Archive '.\file.zip' '.\unziped\'"
AK_
@AK_ qu'en est-il de Windows 8 ou 8.1?
Frank Vu
2
@AK_ vous devriez en faire sa propre réponse.
BrainStone
221

Si vous avez déjà java sur votre PC et que le répertoire bin est dans votre chemin (dans la plupart des cas), vous pouvez utiliser la ligne de commande:

jar xf test.zip

ou sinon sur votre chemin:

C:\Java\jdk1.6.0_03\bin>jar xf test.zip

Ensemble complet d'options pour l'outil Jar disponible ici .

Exemples:

Extract jar file
    jar x[v]f jarfile [inputfiles] [-Joption] 
    jar x[v] [inputfiles] [-Joption]
Brian
la source
37
Un soupçon. Vous avez besoin du JDK, et pas seulement du JRE si vous souhaitez utiliser jar.
Qben
1
c'est bizarre, m jar résout partiellement le problème, car il est capable de lister les fichiers à l'intérieur de l'archive et d'extraire les fichiers spécifiés, cependant, il n'est pas possible d'extraire tous les fichiers en même temps ... assez bizarre
mikus
@mikus: pourquoi pas, il suffit d'utiliser la commande <code> jar.exe xvf Compressed.zip </code>
Xinus
1
java.io.FileNotFoundException: test.zip (Le système ne trouve pas le fichier spécifié)
markj
Existe-t-il un moyen de spécifier un dossier de destination? (comme lorsque vous choisissez l'option Extraire vers)?
Leonardo Alves Machado
41

Tout d'abord, écrivez un utilitaire de décompression à l'aide de vbscript pour déclencher la fonctionnalité de décompression native de Windows. Puis extrayez le script de votre fichier batch, puis appelez-le. Ensuite, c'est aussi bien que autonome. Je l'ai fait dans le passé pour de nombreuses tâches. De cette façon, il ne nécessite pas d'applications tierces, juste le seul fichier de commandes qui fait tout.

J'ai mis un exemple sur mon blog sur la façon de décompresser un fichier à l'aide d'un fichier batch :

' j_unzip.vbs
'
' UnZip a file script
'
' By Justin Godden 2010
'
' It's a mess, I know!!!
'

' Dim ArgObj, var1, var2
Set ArgObj = WScript.Arguments

If (Wscript.Arguments.Count > 0) Then
 var1 = ArgObj(0)
Else
 var1 = ""
End if

If var1 = "" then
 strFileZIP = "example.zip"
Else
 strFileZIP = var1
End if

'The location of the zip file.
REM Set WshShell = CreateObject("Wscript.Shell")
REM CurDir = WshShell.ExpandEnvironmentStrings("%%cd%%")
Dim sCurPath
sCurPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
strZipFile = sCurPath & "\" & strFileZIP
'The folder the contents should be extracted to.
outFolder = sCurPath & "\"

 WScript.Echo ( "Extracting file " & strFileZIP)

Set objShell = CreateObject( "Shell.Application" )
Set objSource = objShell.NameSpace(strZipFile).Items()
Set objTarget = objShell.NameSpace(outFolder)
intOptions = 256
objTarget.CopyHere objSource, intOptions

 WScript.Echo ( "Extracted." )

' This bit is for testing purposes
REM Dim MyVar
REM MyVar = MsgBox ( strZipFile, 65, "MsgBox Example"

Utilisez-le comme ceci:

cscript //B j_unzip.vbs zip_file_name_goes_here.zip
Justin Godden
la source
3
Il est généralement considéré comme bon de mettre du code dans votre réponse, et généralement mauvais de créer un lien pour le code - juste un avertissement!
Rich Bradshaw
39

7-Zip , c'est open source, gratuit et prend en charge un large éventail de formats.

7z.exe x myarchive.zip
neuf côtés
la source
1
si le contenu extrait existe déjà et que vous souhaitez remplacer le contenu existant sans y être invité, utilisez "7z.exe x -y myarchive.zip"
Suketu Bhuta
22

Comme d'autres l'ont fait allusion, 7-zip est génial.

Remarque: je vais compresser puis décompresser un fichier. La décompression est en bas.

Ma contribution:

Obtenir le

Version de ligne de commande 7-Zip

URL actuelle

http://www.7-zip.org/download.html

La syntaxe?

Vous pouvez mettre ce qui suit dans un fichier .bat

"C:\Program Files\7-Zip\7z.exe" a MySuperCoolZipFile.zip "C:\MyFiles\*.jpg" -pmypassword -r -w"C:\MyFiles\" -mem=AES256

J'ai montré quelques options.

-r est récursif. Généralement ce que vous voulez avec la fonctionnalité zip.

a est pour "archive". C'est le nom du fichier zip de sortie.

-p est pour un mot de passe (facultatif)

-w est le répertoire source. Cela imbriquera correctement vos fichiers dans le fichier zip, sans informations de dossier supplémentaires.

-mem est la force de cryptage.

Il y en a d'autres. Mais ce qui précède vous permettra de courir.

REMARQUE: l'ajout d'un mot de passe rendra le fichier zip peu convivial lorsqu'il s'agit de visualiser le fichier via l'Explorateur Windows. Le client peut avoir besoin de sa propre copie de 7-zip (ou winzip ou autre) pour afficher le contenu du fichier.

EDIT :::::::::::: (juste des trucs supplémentaires).

Il existe une version "ligne de commande" qui est probablement mieux adaptée pour cela: http://www.7-zip.org/download.html

(lien direct actuel (au moment de la rédaction)) http://sourceforge.net/projects/sevenzip/files/7-Zip/9.20/7za920.zip/download

La commande zip serait donc (avec la version en ligne de commande de l'outil 7 zip).

"C:\WhereIUnzippedCommandLineStuff\7za.exe" a MySuperCoolZipFile.zip "C:\MyFiles\*.jpg" -pmypassword -r -w"C:\MyFiles\" -mem=AES256

Maintenant, la partie décompresser : (pour décompresser le fichier que vous venez de créer)

"C:\WhereIUnzippedCommandLineStuff\7zipCommandLine\7za.exe" e MySuperCoolZipFile.zip "*.*" -oC:\SomeOtherFolder\MyUnzippedFolder -pmypassword -y -r

Comme alternative à l'argument "e", il existe un argument ax.

  e: Extract files from archive (without using directory names)
  x: eXtract files with full paths

Documentation ici:

http://sevenzip.sourceforge.jp/chm/cmdline/commands/extract.htm

grenadeCoder
la source
11

Merci Rich, je vais en prendre note. Voici donc le script de ma propre solution. Il ne nécessite aucun outil de décompression tiers.

Incluez le script ci-dessous au début du fichier batch pour créer la fonction, puis pour appeler la fonction, la commande est ... cscript /B j_unzip.vbs zip_file_name_goes_here.zip

Voici le script à ajouter en haut ...

REM Changement du dossier de travail vers le répertoire actuel pour la compatibilité Vista & 7
% ~ d0
CD% ~ dp0
Dossier REM modifié

REM Fichiers de ce script upzip ...

    > j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO 'Décompressez un fichier script
    >> j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO 'C'est un bordel, je sais !!!
    >> j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO 'Dim ArgObj, var1, var2
    >> j_unzip.vbs ECHO Set ArgObj = WScript.Arguments
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO Si (Wscript.Arguments.Count ^> 0) Alors
    >> j_unzip.vbs ECHO. var1 = ArgObj (0)
    >> j_unzip.vbs ECHO Else
    >> j_unzip.vbs ECHO. var1 = ""
    >> j_unzip.vbs ECHO Fin si
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO Si var1 = "" alors
    >> j_unzip.vbs ECHO. strFileZIP = "exemple.zip"
    >> j_unzip.vbs ECHO Else
    >> j_unzip.vbs ECHO. strFileZIP = var1
    >> j_unzip.vbs ECHO Fin si
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO 'L'emplacement du fichier zip.
    >> j_unzip.vbs ECHO REM Set WshShell = CreateObject ("Wscript.Shell")
    >> j_unzip.vbs ECHO REM CurDir = WshShell.ExpandEnvironmentStrings ("%% cd %%")
    >> j_unzip.vbs ECHO Dim sCurPath
    >> j_unzip.vbs ECHO sCurPath = CreateObject ("Scripting.FileSystemObject"). GetAbsolutePathName (".")
    >> j_unzip.vbs ECHO strZipFile = sCurPath ^ & "\" ^ & strFileZIP
    >> j_unzip.vbs ECHO 'Le dossier dans lequel le contenu doit être extrait.
    >> j_unzip.vbs ECHO outFolder = sCurPath ^ & "\"
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO. WScript.Echo ("Extraction du fichier" ^ & strFileZIP)
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO Set objShell = CreateObject ("Shell.Application")
    >> j_unzip.vbs ECHO Set objSource = objShell.NameSpace (strZipFile) .Items ()
    >> j_unzip.vbs ECHO Définir objTarget = objShell.NameSpace (outFolder)
    >> j_unzip.vbs ECHO intOptions = 256
    >> j_unzip.vbs ECHO objTarget.CopyHere objSource, intOptions
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO. WScript.Echo ("Extrait.")
    >> j_unzip.vbs ECHO.
Justin Godden
la source
2
belle :) J'utilise ceci pour télécharger la ligne de commande 7zip (dont l'exécutable est zippé (c'est étrange))
Sebastian
Cela fonctionne comme prévu, maintenant je peux compresser n'importe quel dossier et créer un exe en utilisant iexpress et décompresser en utilisant ceci. Cela fonctionne-t-il également dans Windows 10.
Kiran Kumar
9

Il y a un article sur l'accès à la gestion des fichiers Windows .ZIP intégrée avec VBscript ici:

https://www.aspfree.com/c/a/Windows-Scripting/Compressed-Folders-in-WSH/

(Le dernier texte de présentation du code traite de l'extraction)

Jon Bailey
la source
Ce n'est pas facile mais cela semble être une très bonne solution en utilisant uniquement la fonctionnalité de dossier zip native de Windows. Je cherche quelque chose de ça depuis un moment. Merci!
Andre Steenveld
5

À l'origine, les fichiers ZIP ont été créés avec le logiciel de ligne de commande MS-DOS de PKWare, les deux programmes étaient PKZIP.EXE et PKUNZIP.EXE. Je pense que vous pouvez toujours télécharger PKUNZIP sur le site PKWare ici:

http://www.pkware.com/software-pkzip/dos-compression

La ligne de commande réelle pourrait ressembler à ceci:

C:\>pkunzip c:\myzipfile.zip c:\extracttothisfolder\
Michiel
la source
1
C'est oldSchool!
grenadeCoder
3

Récupérez un exécutable dans info-zip .

Info-ZIP prend en charge le matériel des micro-ordinateurs jusqu'aux supercalculateurs Cray, fonctionnant sur presque toutes les versions d'Unix, VMS, OS / 2, Windows 9x / NT / etc. (alias Win32), Windows 3.x, Windows CE, MS-DOS, AmigaDOS, Atari TOS, Acorn RISC OS, BeOS, Mac OS, SMS / QDOS, MVS et OS / 390 OE, VM / CMS, FlexOS, Tandem NSK et Human68K (japonais). Il existe également un (ancien) support pour LynxOS, TOPS-20, AOS / VS et Novell NLM. Des bibliothèques partagées (DLL) sont disponibles pour Unix, OS / 2, Win32 et Win16, et des interfaces graphiques sont disponibles pour Win32, Win16, WinCE et Mac OS.

gimel
la source
1

Copiez le code ci-dessous dans un fichier batch et exécutez. Ci-dessous, Winzip doit être installé / accessible à partir de votre machine. Modifiez les variables selon vos besoins.

@ECHO OFF
SET winzip_path="C:\Program Files\WinZip"
SET source_path="C:\Test"
SET output_path="C:\Output\"
SET log_file="C:\Test\unzip_log.txt"
SET file_name="*.zip"

cd %source_path%
echo Executing for %source_path% > %log_file%

FOR /f "tokens=*" %%G IN ('dir %file_name% /b') DO (
echo Processing : %%G
echo File_Name : %%G >> %log_file%
%winzip_path%\WINZIP32.EXE -e %%G %output_path%
)

PAUSE
Sandeep Gaadhe
la source