328 votes

Comment pouvez-vous compresser ou décompresser depuis le script en utilisant UNIQUEMENT les capacités intégrées de Windows?

Sur Windows, vous pouvez compresser certains fichiers en

cliquant droit → Envoyer versDossier compressé (zippé)

Et décompresser en double-cliquant sur le fichier .zip et extraire les fichiers.

Existe-t-il un moyen d'appliquer ces fonctionnalités depuis un script (.bat) sans avoir besoin d'installer un logiciel tiers?

192voto

Jason Duffett Points 742

Pour compléter la solution PowerShell de Steven Penny, vous pouvez l'incorporer dans un fichier batch en appelant powershell.exe de cette manière:

powershell.exe -nologo -noprofile -command "& { Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('foo.zip', 'bar'); }"

Comme l'a dit Ivan Shilo, cela ne fonctionnera pas avec PowerShell 2, il nécessite PowerShell 3 ou supérieur et .NET Framework 4.

149voto

Noam Manos Points 145

Si vous avez Java installé, vous pouvez compresser dans une archive ZIP en utilisant la commande jar :

jar -cMf targetArchive.zip sourceDirectory

c = Crée un nouveau fichier d'archive.

M = Spécifie qu'un fichier manifeste ne doit pas être ajouté à l'archive.

f = Indique le nom du fichier cible.

100voto

curiosu Points 703

PowerShell 5.0

À partir de Microsoft.PowerShell.Archive , vous pouvez utiliser:

Par exemple:

  • Créer result.zip à partir de l'ensemble du dossier Test :

     Compress-Archive -Path C:\Test -DestinationPath C:\result
  • Extraire le contenu de result.zip dans le dossier Test spécifié:

     Expand-Archive -Path result.zip -DestinationPath C:\Test

87voto

Diryboy Points 601

En 2013, ce n'était pas possible. Microsoft ne fournissait aucun exécutable pour cela.

Voir ce lien pour une manière VBS de le faire. https://superuser.com/questions/201371/create-zip-folder-from-the-command-line-windows

À partir de Windows 8, le Framework .NET 4.5 est installé par défaut, avec System.IO.Compression.ZipArchive et PowerShell disponibles, on peut écrire des scripts pour y parvenir, voir https://stackoverflow.com/a/26843122/71312

37voto

Ce n'est pas exactement un ZIP, mais la seule manière de compresser un fichier en utilisant les outils Windows est :

makecab  .cab

Pour décompresser :

expand .cab 

Exemple avancé (de ss64.com) :

Créer un fichier d'archive auto-extractible contenant movie.mov :
C:\> makecab movie.mov "temp.cab"
C:\> copy /b "%windir%\system32\extrac32.exe"+"temp.cab" "movie.exe"
C:\> del /q /f "temp.cab"

Plus d'informations : makecab, expand, utilisations avancées de makecab

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