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

StackOverflow https://stackoverflow.com/questions/1021557

  •  06-07-2019
  •  | 
  •  

Question

Puis-je décompresser des fichiers via la ligne de commande? Utilisez de préférence des outils open source / gratuits.

Était-ce utile?

Autres conseils

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 si ce n'est pas dans 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]

Tout d’abord, écrivez un utilitaire de décompression utilisant vbscript pour déclencher la fonctionnalité de décompression native de 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 un exemple sur mon blog sur la procédure de décompression d'un fichier à l'aide d'un fichier de traitement par lot :

' 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

7-Zip , il est open source, gratuit et prend en charge un grand nombre de formats. .

7z.exe x myarchive.zip

Comme d'autres l'ont mentionné, 7-zip est excellent.

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

Ma contribution:

Obtenez le

Version en ligne de commande 7-Zip

URL actuelle

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

La syntaxe?

Vous pouvez insérer les éléments suivants 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 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 le niveau 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'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 supplémentaires).

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

(lien direct actuel (au moment de l'écriture)) 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écompressée : (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

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 nom_fichier_zip_goes_here.zip

Voici le script à ajouter au début ...

REM Changing working folder back to current directory for Vista & 7 compatibility
%~d0
CD %~dp0
REM Folder changed

REM This script upzip's files...

    > j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO ' UnZip a file script
    >> j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO ' It's a mess, I know!!!
    >> 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 If (Wscript.Arguments.Count ^> 0) Then
    >> j_unzip.vbs ECHO. var1 = ArgObj(0)
    >> j_unzip.vbs ECHO Else
    >> j_unzip.vbs ECHO. var1 = ""
    >> j_unzip.vbs ECHO End if
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO If var1 = "" then
    >> j_unzip.vbs ECHO. strFileZIP = "example.zip"
    >> j_unzip.vbs ECHO Else
    >> j_unzip.vbs ECHO. strFileZIP = var1
    >> j_unzip.vbs ECHO End if
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO 'The location of the zip file.
    >> 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 'The folder the contents should be extracted to.
    >> j_unzip.vbs ECHO outFolder = sCurPath ^& "\"
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO. WScript.Echo ( "Extracting file " ^& 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 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 ( "Extracted." )
    >> j_unzip.vbs ECHO.

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

https: //www.aspfree. com / c / a / Scripting de Windows / Dossiers compressés dans WSH /

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

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

  

Info-ZIP prend en charge le matériel allant 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, et des interfaces graphiques sont disponibles pour Win32, Win16, WinCE et Mac OS.

À 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\

Copiez le code ci-dessous dans un fichier de commandes et exécutez-le. Ci-dessous, Winzip doit être installé / accessible depuis votre ordinateur. 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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top