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.
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/
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]
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
7-Zip , il est open source, gratuit et supporte une large gamme de formats.
7z.exe x myarchive.Zip
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
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.
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)
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.
À 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. 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