Est-il possible de créer une archive zip à l'aide de PowerShell?
powershell
zip
archive
Valentin Vasilyev
la source
la source
Réponses:
Si vous vous dirigez vers CodePlex et récupérez les extensions de communauté PowerShell , vous pouvez utiliser leur
write-zip
applet de commande.Puisque
vous pouvez accéder à la galerie PowerShell .
la source
write-zip [input file/folder] [output file]
Une alternative PowerShell pure qui fonctionne avec PowerShell 3 et .NET 4.5 (si vous pouvez l'utiliser):
Passez simplement le chemin complet vers l'archive zip que vous souhaitez créer et le chemin complet vers le répertoire contenant les fichiers que vous souhaitez compresser.
la source
Ajout
Compress-Archive
etExpand-Archive
applets de commande PowerShell v5.0 . Les pages liées ont des exemples complets, mais l'essentiel est:la source
Compress-Archive
description: "... la taille de fichier maximale que vous pouvez compresser en utilisant Compress-Archive est actuellement de 2 Go. Il s'agit d'une limitation de l'API sous-jacente" Cependant, si vous utilisez,System.IO.Compression.ZipFile
vous pouvez contourner cette limitation.System.IO.Compression.ZipFile
. Si le framework .NET que vous utilisez n'a pas cette limite, le CmdLet ne doit pas atteindre cette limite. J'ai vérifié dans le code.-OutputPath
paramètre.Une manière native avec le dernier framework .NET 4.5, mais entièrement sans fonctionnalités:
Création:
Extraction:
Comme mentionné, totalement sans fonctionnalités, ne vous attendez donc pas à un indicateur de remplacement .
MISE À JOUR: Voir ci-dessous pour les autres développeurs qui ont développé cela au fil des ans ...
la source
Installez 7zip (ou téléchargez la version de ligne de commande à la place) et utilisez cette méthode PowerShell:
Vous pouvez l'appeler comme ceci:
la source
& "C:\Program Files\7-Zip\7z.exe" a -tzip ($file.FullName+".zip") $file.FullName
Le lot a changé depuis la publication de la réponse initiale. Voici quelques-uns des derniers exemples utilisant la commande Compress-Archive .
Commande pour créer un nouveau fichier d'archive
Draft.zip
, en compressant deux fichiers,Draftdoc.docx
etdiagram2.vsd
, spécifié par lePath
paramètre. Le niveau de compression spécifié pour cette opération est optimal.Commande pour créer un nouveau fichier d'archive
Draft.zip
, en compressant deux fichiers,Draft doc.docx
etDiagram [2].vsd
, spécifié par leLiteralPath
paramètre. Le niveau de compression spécifié pour cette opération est optimal.Commande pour créer un nouveau fichier d'archive,,
Draft.zip
dans leC:\Archives
dossier. Le nouveau fichier d'archive contient tous les fichiers du dossier C: \ Reference , car un caractère générique a été utilisé à la place de noms de fichiers spécifiques dans le paramètre Path .La commande crée une archive à partir d'un dossier entier,
C:\Reference
PowerShell ajoute
.zip
automatiquement l' extension au nom de fichier.la source
Edit two - Ce code est un kluge laid et laid des temps anciens. Tu n'en veux pas.
Cela compresse le contenu de
.\in
to.\out.zip
avec System.IO.Packaging.ZipPackage en suivant l'exemple iciEdit: peu fiable pour les fichiers plus volumineux, peut-être> 10 Mo, YMMV. Quelque chose à voir avec les preuves du domaine d'application et le stockage isolé. L' approche .NET 4.5 plus conviviale fonctionne bien avec PS v3, mais voulait plus de mémoire dans mon cas. Pour utiliser .NET 4 à partir de PS v2, les fichiers de configuration nécessitent un ajustement non pris en charge .
la source
Donner ci-dessous une autre option. Cela zippera un dossier complet et écrira l'archive dans un chemin donné avec le nom donné.
Nécessite .NET 3 ou supérieur
la source
Voici une solution native pour PowerShell v5, à l'aide de l'applet de commande
Compress-Archive
Création de fichiers Zip à l'aide de PowerShell .Voir également les documents Microsoft pour Compress-Archive .
Exemple 1:
Exemple 2:
Exemple 3:
la source
Pour la compression, j'utiliserais une bibliothèque (7-Zip est bon comme le suggère Michal ).
Si vous installez 7-Zip , le répertoire installé contiendra
7z.exe
ce qui est une application console.Vous pouvez l'invoquer directement et utiliser n'importe quelle option de compression de votre choix.
Si vous souhaitez vous engager avec la DLL, cela devrait également être possible.
7-Zip est un logiciel gratuit et open source.
la source
Et alors
System.IO.Packaging.ZipPackage
?Cela nécessiterait .NET 3.0 ou supérieur.
via Anders Hesselbom
la source
Pourquoi personne ne regarde la documentation ?? Il existe une méthode prise en charge pour créer un fichier zip vide et y ajouter des fichiers individuels intégrés dans la même bibliothèque .NET 4.5 que tout le monde fait référence.
Voir ci-dessous pour un exemple de code:
Je vous encourage à parcourir la documentation si vous avez des questions.
la source
C'est vraiment obscur mais ça marche. 7za.exe est une version autonome de 7zip et est disponible avec le package d'installation.
la source
Si quelqu'un a besoin de compresser un seul fichier (et non un dossier): http://blogs.msdn.com/b/jerrydixon/archive/2014/08/08/zipping-a-single-file-with-powershell.aspx
la source
Voici le code de travail, compresser tous les fichiers d'un dossier source et créer un fichier zip dans le dossier de destination.
la source
Remarque:
ZipName: Chemin complet du fichier Zip que vous souhaitez créer.
SourceDirectory: chemin complet vers le répertoire contenant les fichiers que vous souhaitez compresser.
la source
Voici une version légèrement améliorée de la réponse de sonjz, elle ajoute une option d'écrasement.
la source
Cela devrait également fonctionner pour compresser un seul fichier sans utiliser de dossier temporaire et en utilisant .Net 4.5 natif, converti à partir de C # à partir de cette réponse StackOverflow . Il utilise une syntaxe plus agréable à partir d' ici .
Usage:
ZipFiles -zipFilename output.zip -sourceFile input.sql -filename name.inside.zip.sql
Code:
En utilisant:
la source
shell.application
entreprise ou 7-Zip / autres utilitaires distincts. J'aime aussi laUsing-Object
fonction, bien que j'aie opté pour une approche plus courte et rapide sans cela.J'utilise cet extrait pour vérifier mon dossier de sauvegardes de base de données pour les fichiers de sauvegarde pas encore compressés, les compresser à l'aide de 7-Zip, et enfin supprimer les
*.bak
fichiers pour économiser de l'espace disque. Les fichiers d'avis sont classés par longueur (du plus petit au plus grand) avant la compression pour éviter que certains fichiers ne soient pas compressés.Ici, vous pouvez vérifier un script PowerShell pour sauvegarder, compresser et transférer ces fichiers via FTP .
la source
Si vous avez installé WinRAR:
Signification des arguments: afzip crée une archive zip, df supprime des fichiers, ep1 ne crée pas de chemin de répertoire complet dans l'archive
la source
Voici un exemple de ligne de commande complet pour lancer depuis cmd.exe ou depuis ssh ou ce que vous voulez!
Cordialement
la source
Chargement du
[System.IO.IOException]
classe et utiliser ses méthodes est une étape importante pour supprimer les erreurs indésirables, car il s'agit d'une classe non native de PowerShell, alors attendez-vous à divers contextes d'erreurs sans elle.J'ai contrôlé mon script par erreur sur le T, mais j'ai obtenu beaucoup de sortie supplémentaire de «fichier existe» en utilisant la
[System.IO.Compression.ZipFile]
classeCe que je fais ici, c'est attraper ces erreurs d'E / S, comme accéder aux fichiers qui existent déjà, attraper cette erreur et la diriger vers un fichier journal que je gère avec un programme plus grand.
la source
Les commandes de ligne de commande complètes dans Windows pour compresser et extraire le répertoire sont les suivantes:
Pour la compression:
Pour l'extraction:
la source
Les roches d'approche ionique:
https://dotnetzip.codeplex.com/wikipage?title=PS-Examples
prend en charge les mots de passe, d'autres méthodes de cryptage, etc.
la source
Ce script parcourt tous les répertoires et zippe chacun
Get-ChildItem -Attributes d | foreach {write-zip $ .Name "$ ($ .Name) .zip"}
la source