web-dev-qa-db-fra.com

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

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.

153
Th3Fix3r
46
Red33mer

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]
207
Brian

Tout d'abord, écrivez un utilitaire de décompression à l'aide de vbscript pour déclencher la fonctionnalité de décompression native dans Windows. Puis acheminez le script à partir de votre fichier de commandes, puis appelez-le. Ensuite, c'est comme si on était seul. Je l'ai fait par le passé pour de nombreuses tâches. De cette façon, il n’est pas nécessaire de recourir à des applications tierces, mais uniquement au fichier de commandes qui fait tout.

Je mets n exemple sur mon blog sur la façon de décompresser un fichier en utilisant 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
39
Justin Godden

7-Zip , il est open source, gratuit et supporte une large gamme de formats.

7z.exe x myarchive.Zip
37
ninesided

Comme d'autres l'ont mentionné, 7-Zip est génial.

Remarque: je vais compresser puis décompresser un fichier. Décompressez est en bas.

Ma contribution:

Obtenir le

Version en 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. Habituellement, ce que vous voulez avec la fonctionnalité Zip.

a est pour "archive". C'est le nom du fichier Zip en sortie.

-p est pour un mot de passe (optionnel)

-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 fera courir.

REMARQUE: L'ajout d'un mot de passe rendra le fichier Zip peu convivial lorsqu'il s'agira de l'afficher 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 en plus).

Il existe une version "en ligne de commande" qui convient probablement mieux pour ceci: http://www.7-Zip.org/download.html

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

Ainsi, la commande Zip serait (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 unzip : (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

Documentation ici:

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

19
granadaCoder

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

Incluez le script ci-dessous au début du fichier de commandes 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 Remettre le dossier de travail dans le répertoire actuel pour compatibilité Vista & 7 
% ~ D0 
 CD% ~ dp0 
 REM Le dossier a changé 
 
 REM Ce script contient les fichiers upzip ... 
 
> J_unzip.vbs ECHO '
 >> j_unzip.vbs ECHO' Décompressez un script de fichier 
 >> j_unzip.vbs ECHO '
 >> j_unzip.vbs ECHO' C'est un gâchis, je sais !!! 
 >> j_unzip.vbs ECHO '
 >> j_unzip.vbs ECHO. 
 >> j_unzip.vbs ECHO 'Dim ArgObj, var1, var2 
 >> j_unzip.vbs ECHO défini 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 Autre 
 >> 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 Autre 
 >> j_unzip.vbs ECHO. strFileZIP = var1 
 >> j_unzip.vbs ECHO Fin si 
 >> j_unzip.vbs ECHO. 
 >> j_unzip.vbs ECHO 'Emplacement du fichier Zip. 
 >> j_unzip.vbs ECHO REM Définissez 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 de fichier" ^ & strFileZIP) 
 >> j_unzip.vbs ECHO. 
 >> j_unzip.vbs ECHO Défini objShell = CreateObject ("Shell.Application") 
 >> j_unzip.vbs ECHO Set objSource = objShell.NameSpace (strZipFile) .Items () 
 >> j_unzip.vbs ECHO Set 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. 
10
Justin Godden

Vous trouverez ici un article sur la gestion du fichier .Zip intégré à Windows avec VBscript:

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

(Le dernier texte de code traite de l'extraction)

8
Jon Bailey

Prenez un exécutable de info-zip .

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

2
gimel

À l'origine, les fichiers Zip étaient créés à l'aide du 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\
2
Michiel

Copiez le code ci-dessous dans un fichier de commandes et exécutez-le. Ci-dessous, Winzip doit être installé/accessible depuis votre ordinateur. Changez 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
1
Sandeep Gaadhe