Comment décompresser un fichier en utilisant la ligne de commande? [fermé]
Question
Puis-je décompresser des fichiers via la ligne de commande? Utilisez de préférence des outils open source / gratuits.
La solution
Vous pouvez utiliser:
http://membrane.com/synapse/library/pkunzip.html
ou
7zip: http://www.7-zip.org/download.html
Octet gratuit zip: http://www.freebyte.com/fbzip/
ou infozip: http://infozip.sourceforge.net/
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.
' 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