Shell.Application
Avec Shell.Application, vous pouvez émuler la façon dont explorer.exe compresse les fichiers et dossiers. Le script s'appelle zipjs.bat:
:: décompresser le contenu d'un zip vers un dossier donné. Le contenu du zip ne sera pas conservé (-keep no). La destination ne sera pas écrasée (-force no)
call zipjs.bat unzip -source C:\myDir\myZip.zip -destination C:\MyDir -keep no -force no
:: lister le contenu d'un fichier zip et les chemins complets seront affichés (-flat yes)
call zipjs.bat list -source C:\myZip.zip\inZipDir -flat yes
:: lister le contenu d'un fichier zip et le contenu sera listé sous forme d'arborescence (-flat no)
call zipjs.bat list -source C:\myZip.zip -flat no
:: afficher la taille non compressée en octets
zipjs.bat getSize -source C:\myZip.zip
:: compresser le contenu du dossier sans le dossier lui-même
call zipjs.bat zipDirItems -source C:\myDir\ -destination C:\MyZip.zip -keep yes -force no
:: compresser un fichier ou un dossier (avec le dossier lui-même)
call zipjs.bat zipItem -source C:\myDir\myFile.txt -destination C:\MyZip.zip -keep yes -force no
:: décompresser uniquement une partie du zip avec le chemin donné à l'intérieur
call zipjs.bat unZipItem -source C:\myDir\myZip.zip\InzipDir\InzipFile -destination C:\OtherDir -keep no -force yes
call zipjs.bat unZipItem -source C:\myDir\myZip.zip\InzipDir -destination C:\OtherDir
:: ajouter du contenu à un fichier zip
call zipjs.bat addToZip -source C:\some_file -destination C:\myDir\myZip.zip\InzipDir -keep no
call zipjs.bat addToZip -source C:\some_file -destination C:\myDir\myZip.zip
MAKECAB
Makecab est l'outil de compression par défaut livré avec Windows. Bien qu'il puisse utiliser différents algorithmes de compression (y compris le format zip), le format de fichier est toujours un fichier .cab
. Avec quelques extensions, il peut également être utilisé sur des machines Linux.
Compression d'un fichier:
makecab file.txt "file.cab"
Compresser un dossier entier nécessite un peu plus de travail. Voici comment un répertoire est compressé avec cabDir.bat:
call cabDir.bat ./myDir compressedDir.cab
La décompression est assez simple avec la commande expand
:
EXPAND cabfile -F:* .
Une manière plus "hacky" est de créer un exécutable auto-extractible avec la commande extrac32:
copy /b "%windir%\system32\extrac32.exe"+"mycab.cab" "expandable.exe"
call expandable.exe
TAR
Avec la version 17063 de Windows, nous avons la commande tar:
:: compresser un répertoire
tar -cvf archive.tar c:\my_dir
:: extrait dans un répertoire
tar -xvf archive.tar.gz -C c:\data
Outils .NET
.Net (et Powershell) offrent de nombreuses façons de compresser et de décompresser des fichiers. La méthode la plus directe est avec le flux gzip. Le script s'appelle gzipjs.bat:
:: compresser
call gzipjs.bat -c my.file my.zip
:: décompresser
call gzipjs.bat -u my.zip my.file