Sous Windows, vous pouvez compresser certains fichiers en
clic droit → Envoyer vers → Dossier compressé (zippé)
Et décompressez en double-cliquant sur le .zip
fichier et extrayez les fichiers.
Existe-t-il un moyen d'appliquer ces capacités à partir d'un script (fichier .bat) sans avoir à installer de logiciel tiers ?
windows
batch-file
zip
Roee Gavirel
la source
la source
Réponses:
En 2013, ce n'était pas possible. Microsoft n'a fourni aucun exécutable pour cela.
Voir ce lien pour une façon VBS de le faire. /superuser/201371/create-zip-folder-from-the-command-line-windows
À partir de Windows 8, .NET Framework 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
la source
Pour développer la solution PowerShell de Steven Penny, vous pouvez l'intégrer dans un fichier de commandes en appelant powershell.exe comme ceci:
Comme Ivan Shilo l'a dit, cela ne fonctionnera pas avec PowerShell 2, cela nécessite PowerShell 3 ou supérieur et .NET Framework 4.
la source
'.'
, par exemple:powershell.exe -nologo -noprofile -command "& { Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('foo.zip', '.'); }"
& {}
? Avec PS5, cela fonctionne aussi:powershell.exe -nologo -noprofile -command "Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('foo.zip', '.');"
Depuis .NET 4.5 , PowerShell peut faire ceci:
Pour les deux dernières lignes,
bar
etfoo
peut être remplacé par le nom que vous souhaitez que le dossier ait, ou quel que soit le nom du dossier préexistant.foo.zip
dans les deux cas, sert de fichier zip pour enregistrer sous ou décompresser.la source
Si Java est installé, vous pouvez compresser en une archive ZIP à l'aide de la
jar
commande:la source
PowerShell 5.0
De
Microsoft.PowerShell.Archive
vous pouvez utiliser:Compress-Archive
Expand-Archive
Par exemple:
Créez à
result.zip
partir de l'ensemble duTest
dossier:Extrayez le contenu de
result.zip
dans leTest
dossier spécifié :la source
powershell Compress-Archive -Path C:\SomeFile.ext -DestinationPath C:\SomeFile.zip
directement à partir de la ligne de commande sans avoir besoin de créer un script (en supposant que vous avez installé Powershell v5, ce que vous pouvez faire au moins pour revenir à Windows 7).Ce n'est pas exactement un ZIP, mais la seule façon de compresser un fichier à l'aide des outils Windows est:
Pour décompresser:
Exemple avancé (de ss64.com):
Plus d'information: makecab , expand , utilisations avancées de makecab
la source
Utilisation de 7-Zip:
Zip : vous avez un dossier
foo
et souhaitez le compressermyzip.zip
Décompressez : vous voulez le décompresser (
myzip.zip
) dans le répertoire courant (./
)la source
without the need to install any 3rd party
J'ai cherché à répondre à cette question exacte et d'après mes recherches, la réponse de DiryBoy semble être exacte.
J'ai trouvé que le programme compact.exe compresse les fichiers mais pas pour créer un fichier hautement compressé (ou un ensemble de fichiers). C'est similaire à l'option que vous obtenez lorsque vous cliquez avec le bouton droit sur une lettre de lecteur ou une partition dans Windows. Vous avez la possibilité de nettoyer (supprimer les fichiers temporaires, etc.) ainsi que de compresser les fichiers. Les fichiers compressés sont toujours accessibles mais sont simplement compressés pour créer de l'espace sur un lecteur qui manque d'espace.
J'ai également trouvé compress.exe que j'avais sur mon ordinateur. Il n'est pas natif sur la plupart des machines Windows et fait partie du kit de ressources 2003. Il crée un fichier zippé, mais il est vraiment plus similaire aux fichiers d'un disque d'installation de Windows (le trait de soulignement est le dernier caractère de l'extension ou du nom du fichier). Et la commande extract.exe extrait ces fichiers.
Cependant, le mantra est que si cela peut être fait en natif via l'interface graphique, il existe probablement un moyen de le faire via batch, .vbs ou tout autre type de script dans la ligne de commande. Depuis que Windows a eu l'option «envoyer vers» pour créer un fichier zip, je savais qu'il devait y avoir un moyen de le faire via la ligne de commande et j'ai trouvé quelques options.
Voici un excellent lien qui montre comment compresser un fichier à l'aide de commandes natives Windows.
/superuser/110991/can-you-zip-a-file-from-the-command-prompt-using-only-windows-built-in-capabili
Je l'ai testé avec un répertoire contenant plusieurs fichiers et dossiers imbriqués et cela a parfaitement fonctionné. Suivez simplement le format de la ligne de commande.
Il existe également un moyen de décompresser les fichiers via la ligne de commande que j'ai également trouvé. Dans un sens, ouvre simplement une fenêtre d'explorateur indiquant le contenu du fichier compressé. Certains d'entre eux utilisent également Java qui n'est pas nécessairement natif de Windows, mais est si commun qu'il semble presque l'être.
/superuser/149489/does-windows-7-have-unzip-at-the-command-line-installed-by-default
Comment décompresser un fichier en utilisant la ligne de commande?
la source
Vous pouvez utiliser un script VBScript enveloppé dans un fichier BAT. Ce code fonctionne sur un CHEMIN relatif.
Il n'y a aucun besoin d'outils ou de dépendances tiers. Réglez juste
SOURCEDIR
etOUTPUTZIP
.Nom de fichier: ZipUp.bat
Exemple d'utilisation
Alternativement, vous pouvez paramétrer ce fichier en remplaçant la ligne
CScript _zipup.vbs %SOURCEDIR% %OUTPUTZIP%
parCScript _zipup.vbs %1 %2
, auquel cas il peut être encore plus facilement appelé en appelant simplementCALL ZipUp C:\Source\Dir C:\Archive.zip
.la source
J'ai un problème avec toutes ces solutions.
Ils ne sont pas exactement les mêmes, et ils créent tous des fichiers qui ont une légère différence de taille par rapport à ceux
RMB --> send to --> compressed (zipped) folder
créés à partir du même dossier source. La différence de taille la plus proche que j'ai eue est de 300 Ko de différence (script> manuel), faite avec:(Remarquez le -CompressionLevel . Il existe trois valeurs possibles : Fastest, NoCompression & Optimal, (par défaut: Optimal))
Je voulais créer un fichier .bat qui devrait automatiquement compresser un dossier de plugins WordPress sur lequel je travaille, dans une archive .zip, afin de pouvoir le télécharger sur le site WordPress et tester le plugin.
Mais pour une raison quelconque, cela ne fonctionne avec aucune de ces compressions automatiques, mais cela fonctionne avec la compression manuelle RMB, ce que je trouve vraiment étrange.
Et les fichiers .zip générés par script cassent en fait les plugins WordPress au point où ils ne peuvent pas être activés, et ils ne peuvent pas non plus être supprimés de WordPress. Je dois SSH dans le "côté arrière" du serveur et supprimer les fichiers plugin téléchargés eux-mêmes, manuellement. Alors que les fichiers générés manuellement par RMB fonctionnent normalement.
la source
Si vous devez le faire dans le cadre d'un script, la meilleure façon est d'utiliser Java. En supposant que le répertoire bin se trouve dans votre chemin (dans la plupart des cas), vous pouvez utiliser la ligne de commande:
Si Java n'est pas sur votre chemin, référencez-le directement:
la source
L'open source est votre ami :-)
Voici la décompression : http://gnuwin32.sourceforge.net/packages/unzip.htm
Il existe également une commande ZIP: http://gnuwin32.sourceforge.net/packages/zip.htm
Le téléchargement des binaires est suffisant.
la source
Ceci est une version mise à jour de la réponse fournie par @ PodTech.io
Cette version a tout le code vbs correctement échappé dans le fichier de commandes. Il est également créé dans une sous-routine, qui peut être appelée avec une seule ligne de n'importe où dans votre script de commandes:
la source
Vous dites que vous essayez de le faire sans logiciel tiers. Je ne sais pas si vous envisageriez un logiciel "tiers" .NET.
Mais vous pouvez créer votre propre utilitaire de ligne de commande dans .NET. Il ne devrait pas nécessiter plus de quelques lignes de code.
Classe ZipFile
la source
En ajoutant la réponse de @Jason Duffett et ses commentaires, voici un script qui obtient l'entrée et la sortie (nom de fichier et nom de répertoire, respectivement) de l'utilisateur:
Usage:
la source
Pour compresser un fichier:
la source
Vous pouvez décompresser un fichier Windows compressé zippé ou natif en utilisant la commande Expand , par exemple
la source
Expand file.zip file
copie simplement le zip dans un autre fichier sans l'extension. Il ne décompresse pas le ZIP dans un dossier.