183 votes

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

Puis-je dézipper des fichiers par la ligne de commande ? De préférence à l'aide d'outils open source/gratuits.

11voto

Justin Godden Points 197

Merci Rich, je vais prendre note de cela. Voici donc le script pour ma propre solution. Elle ne nécessite pas d'outils de dézippage tiers.

Incluez le script ci-dessous au début du fichier batch pour créer la fonction, et ensuite 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 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.

6voto

Michiel Points 1209

À l'origine, les fichiers ZIP étaient 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 de PKWare ici :

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

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

C:\>pkunzip c:\myzipfile.zip c:\extracttothisfolder\

5voto

Jon Bailey Points 69

Il existe un article sur la manipulation des fichiers .ZIP intégrés de Windows avec VBscript ici :

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

(La dernière partie du code traite de l'extraction).

3voto

gimel Points 30150

Récupérer un exécutable à partir de info-zip .

Info-ZIP est compatible avec des matériels allant des micro-ordinateurs aux superordinateurs Cray, et fonctionne 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 support (ancien) pour LynxOS, TOPS-20, AOS/VS et Novell NLMs. 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.

1voto

Sandeep Gaadhe Points 1

Copiez le code ci-dessous dans un fichier batch et exécutez-le. Le code ci-dessous nécessite que Winzip soit installé/accessible depuis votre machine. Changez les variables en fonction de 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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X