Puis-je dézipper des fichiers par la ligne de commande ? De préférence à l'aide d'outils open source/gratuits.
Réponses
Trop de publicités?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.
À 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\
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).
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.
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
- Réponses précédentes
- Plus de réponses