web-dev-qa-db-fra.com

Windows a-t-il une commande Zip intégrée pour la ligne de commande?

Étant donné que l'Explorateur Windows (depuis au moins Windows XP) a une prise en charge de base pour les fichiers Zip, il semble qu'il devrait y avoir un équivalent en ligne de commande, mais je ne semble pas en trouver le moindre signe.

Windows (XP, Vista, 7, 8, 2003, 2008, 2013) est-il livré avec un outil Zip de ligne de commande intégré, ou dois-je m'en tenir à des outils tiers?

119
Electrons_Ahoy

Il n'est pas intégré à Windows, mais il se trouve dans Resource Kit Tools as COMPRESS,

C:\>compress /?

Syntax:

COMPRESS [-R] [-D] [-S] [ -Z | -ZX ] Source Destination
COMPRESS -R [-D] [-S] [ -Z | -ZX ] Source [Destination]

Description:
Compresses one or more files.

Parameter List:
-R Rename compressed files.

-D Update compressed files only if out of date.

-S Suppress copyright information.

-ZX LZX compression. This is default compression.

-Z MS-Zip compression.

Source Source file specification. Wildcards may be
used.

Destination Destination file | path specification.
Destination may be a directory. If Source is
multiple files and -r is not specified,
Destination must be a directory.

Exemples:

COMPRESS temp.txt compressed.txt
COMPRESS -R *.*
COMPRESS -R *.exe *.dll compressed_dir
56
Bryan

Pas que je sache. En ce qui concerne les outils tiers, 7Zip a une interface de ligne de commande assez agréable et le binaire peut être distribué avec votre application dans le répertoire de l'application, vous n'avez donc pas à vous fier à son installation à l'avance.

25
Chris
21
John Rennie

.Net 4.5 intègre cette fonctionnalité et peut être exploitée par PowerShell. Vous devrez être sur Server 2012, Windows 8 ou avoir installé .Net 4.5 manuellement.

[Reflection.Assembly]::LoadWithPartialName("System.IO.Compression.FileSystem")
$Compression = [System.IO.Compression.CompressionLevel]::Optimal
$IncludeBaseDirectory = $false

$Source = "C:\Path\To\Source"
$Destination = "C:\CoolPowerShellZipFile.Zip"

[System.IO.Compression.ZipFile]::CreateFromDirectory($Source,$Destination,$Compression,$IncludeBaseDirectory)
14
MDMarra

Une autre solution trouvée sur le site de superutilisateur utilise un objet com natif de Windows dans un fichier .bat:

Pouvez-vous compresser un fichier à partir de l'invite de commande en utilisant UNIQUEMENT la capacité intégrée de Windows pour compresser les fichiers?

6
Krilivye

Il existe une seule commande PowerShell simple pour cela. (PowerShell v5.0 +)

Fermer:

Compress-Archive -LiteralPath 'C:\mypath\testfile.txt' -DestinationPath "C:\mypath\Test.Zip"

Pour décompresser:

Expand-Archive -LiteralPath "C:\mypath\Test.Zip" -DestinationPath "C:\mypath" -Force

Sources:

Remerciements particuliers à @Ramhound

0
cowlinator