Comment Pouvez-vous zip ou décompresser à partir du script en utilisant seulement les capacités intégrées de Windows? [fermé]

sous Windows vous pouvez zip certains fichiers de

clic droit -- > envoyer à --> dossier comprimé (zippé)

et unzip en double cliquant sur le fichier .zip et extraire les fichiers.

Est-il un moyen d'appliquer ces compétences à partir d'un script (.bat file) sans la nécessité d'installer un tiers ?

219
demandé sur Mark Rotteveel 2013-07-09 14:34:25

14 réponses

en 2013, ce n'était pas possible. MS n'a fourni aucun exécutable pour cela.

voir ce lien pour quelques VBS façon de le faire. https://superuser.com/questions/201371/create-zip-folder-from-the-command-line-windows

From Windows 8 on, .net Framework 4.5 is installed by default, with System.IO.Compression.Zi-parchive et PowerShell disponibles, on peut écrire des scripts pour y parvenir, voir https://stackoverflow.com/a/26843122/71312

63
répondu Diryboy 2017-05-23 11:54:58

pour développer la solution PowerShell de Steven Penny, vous pouvez l'intégrer dans un fichier batch en appelant powershell.exe comme ceci:

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

comme Ivan Shilo l'a dit, cela ne marchera pas avec PowerShell 2, Il faut PowerShell 3 ou plus et.NET Framework 4.

145
répondu Jason Duffett 2014-11-10 11:45:59

PowerShell peut le faire

Add-Type -A System.IO.Compression.FileSystem
[IO.Compression.ZipFile]::CreateFromDirectory('foo', 'foo.zip')
[IO.Compression.ZipFile]::ExtractToDirectory('foo.zip', 'bar')
132
répondu Steven Penny 2014-11-12 17:10:25

si vous avez Java installé, vous pouvez compresser à ZIP archive en utilisant jar commande:

jar -cMf targetArchive.zip sourceDirectory

C = crée un nouveau fichier d'archives.

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

f = indique le nom du fichier cible.

111
répondu Noam Manos 2015-04-26 14:47:58

PowerShell 5.0

de Microsoft.PowerShell.Archive vous pouvez utiliser:

E. G.:

  • créer result.zip à partir du dossier Test complet:

    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
    
39
répondu ROMANIA_engineer 2016-10-24 22:00:42

ce n'est pas exactement un zip, mais la seule façon de compresser un fichier en utilisant les outils de Windows est:

makecab <source> <dest>.cab

pour décompresser:

expand <source>.cab <dest>

exemple avancé (de ss64.com):

Create a self extracting archive containing 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'infos: makecab , développer , makecab usages avancés

32
répondu Federico Santamorena 2015-05-29 01:51:23

Utilisant 7-Zip:

Zip : vous avez un dossier foo , et vous voulez le zip à myzip.zip

"C:\Program Files-Zipz.exe" a  -r myzip.zip -w foo -mem=AES256

Décompresser : vous voulez décompresser ( myzip.zip ) du répertoire courant ( ./ )

"C:\Program Files-Zipz.exe" x  myzip.zip  -o./ -y -r
20
répondu Monir 2017-12-21 16:39:32

J'ai cherché à répondre à cette question exacte et de mes recherches, la réponse de DiryBoy semble être exacte.

j'ai trouvé le compact.le programme exe comprime des fichiers, mais pas pour créer un fichier fortement compressé (ou un ensemble de fichiers). Il est similaire à l'option que vous obtenez en cliquant droit sur une lettre de lecteur ou une partition dans Windows. Vous avez l'option de faire le nettoyage (supprimer des fichiers temp, etc) ainsi que des fichiers compress. Les fichiers compressés sont toujours accessibles, mais sont juste comprimé pour créer de l'espace sur un disque qui est faible sur l'espace.

j'ai aussi trouvé de la compresse.exe que j'avais par hasard sur mon ordinateur. Il n'est pas nativement sur la plupart des machines windows et fait partie du kit de ressources 2003. Il ne fait un fichier zippé de sortes, mais il est vraiment plus similaire à des fichiers d'un disque Windows setup (a le underscore comme le dernier caractère de l'extension de fichier ou le nom). Et l'extrait.la commande exe extrait ces fichiers.

Cependant, le mantra est, si elle peut être faite nativement via L'interface graphique, alors il y a probablement un moyen de le faire par lot,.vbs, ou un autre type de script dans la ligne de commande. Depuis windows a eu l'option "Envoyer à" 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 grand lien qui montre comment zip r un fichier en utilisant les commandes natives de windows.

https://superuser.com/questions/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 il a fonctionné parfaitement. Il suffit de suivre le format de la ligne de commande.

Il est aussi un moyen pour décompresser les fichiers via la ligne de commande que j'ai trouvé. Une façon, il suffit d'ouvrir une fenêtre d'Explorateur montrant ce que le contenu du zippé fichier est. Certains d'entre eux utilisent aussi Java qui n'est pas nécessairement natif de windows mais est si commun qu'il semble presque.

https://superuser.com/questions/149489/does-windows-7-have-unzip-at-the-command-line-installed-by-default

comment décompresser un fichier en utilisant la ligne de commande?

8
répondu LostUser 2017-05-23 12:18:16

vous pouvez utiliser un vbsscript enveloppé dans un fichier BAT... c'est mon code qui fonctionne sur un chemin relatif...

Pas besoin d'outils tiers ou des dépendances.. il suffit de définir la source et la destination.

nom du fichier: zipping.chauve-souris

echo Set fso = CreateObject("Scripting.FileSystemObject") > _zipup.vbs
echo InputFolder = fso.GetAbsolutePathName(WScript.Arguments.Item(0)) >> _zipup.vbs
echo ZipFile = fso.GetAbsolutePathName(WScript.Arguments.Item(1)) >> _zipup.vbs

'Create empty ZIP file.
echo CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar) >> _zipup.vbs

echo Set objShell = CreateObject("Shell.Application") >> _zipup.vbs
echo Set source = objShell.NameSpace(InputFolder).Items >> _zipup.vbs
echo objShell.NameSpace(ZipFile).CopyHere(source) >> _zipup.vbs


echo 'Keep script waiting until compression is done
echo Do Until objShell.NameSpace( ZipFile ).Items.Count = objShell.NameSpace( InputFolder ).Items.Count >> _zipup.vbs
echo     WScript.Sleep 200 >> _zipup.vbs
echo Loop >> _zipup.vbs

CScript  _zipup.vbs  %SOURCEDIR%  %OUTPUTZIP%

del _zipup.vbs
4
répondu PodTech.io 2016-02-06 00:01:58

l'Open source est votre ami :-)

voici le UNZIP: http://gnuwin32.sourceforge.net/packages/unzip.htm

il y a aussi une commande ZIP: http://gnuwin32.sourceforge.net/packages/zip.htm

le téléchargement des binaires est suffisant.

3
répondu JanBorup 2015-01-21 22:11:17

si vous avez besoin de faire cela dans le cadre d'un script, alors la meilleure façon est D'utiliser Java. En supposant que le répertoire bin soit dans votre chemin (dans la plupart des cas), vous pouvez utiliser la ligne de commande:

jar xf test.zip

si Java n'est pas sur votre carte de référence directement:

C:\Java\jdk1.6.0_03\bin>jar xf test.zip
1
répondu eddyoc 2014-11-24 16:27:36

vous dites que vous essayez de le faire sans un logiciel tiers. Je ne suis pas sûr que vous considériez .NET comme un logiciel "tiers".

mais vous pouvez créer votre propre utilitaire en ligne de commande .NET. Il ne devrait pas nécessiter plus de quelques lignes de code.

https://msdn.microsoft.com/en-us/library/system.io.compression.zipfile (v=V110).aspx

1
répondu NL3294 2015-05-22 16:51:59

vous pouvez décompresser un fichier windows compressé zippé ou natif en utilisant la commande Expand command, e.g.

expand MyFile.zip myFile
-2
répondu Lance 2014-01-12 16:55:30

pour zip un fichier:

C:\> zip -9 -m -o file.dat.zip file.dat
  • -9 compression maximale
  • - m supprimer le fichier original après une compression réussie
  • - o définir la date de modification du fichier zip identique au fichier original
  • dommage qu'il faille lui donner le nom du fichier zip désiré au lieu de simplement l'ajouter .extension zip au nom du fichier to compress
-3
répondu Tulains Córdova 2015-01-12 14:31:04