Comment décompresser un fichier en utilisant la cmd?

11

Je veux faire un fichier BAT qui ZIP ou UNZIP un fichier. Pour compresser un fichier, j'ai trouvé cette question: Pouvez-vous compresser un fichier à partir de l'invite de commande en utilisant uniquement la capacité intégrée de Windows pour compresser des fichiers?

Les réponses données sont excellentes et fonctionnent pour moi, mais je n’ai trouvé aucune information sur la façon de décompresser les fichiers. Comme dans le lien, je ne peux pas supposer d'outils tiers (à l'exception de WinRAR).

Merci d'avance et désolé pour les fautes d'anglais

Chen Tasker
la source
stackoverflow.com/a/26843122/4568534 Cette réponse montre yoyu comment décompresser un fichier
Raghu Ranganathan
1
si vous avez PowerShell 5 (intégré à Windows 10), alors vous pourriez utiliserpowershell -command "Expand-Archive C:\foo\bar.zip C:\somewhere"
SimonS

Réponses:

7

Ce code de fichier de commandes vous aidera à décompresser un fichier.

@echo off
setlocal
cd /d %~dp0
Call :UnZipFile "C:\Temp\" "c:\FolderName\batch.zip"
exit /b

:UnZipFile <ExtractTo> <newzipfile>
set vbs="%temp%\_.vbs"
if exist %vbs% del /f /q %vbs%
>%vbs%  echo Set fso = CreateObject("Scripting.FileSystemObject")
>>%vbs% echo If NOT fso.FolderExists(%1) Then
>>%vbs% echo fso.CreateFolder(%1)
>>%vbs% echo End If
>>%vbs% echo set objShell = CreateObject("Shell.Application")
>>%vbs% echo set FilesInZip=objShell.NameSpace(%2).items
>>%vbs% echo objShell.NameSpace(%1).CopyHere(FilesInZip)
>>%vbs% echo Set fso = Nothing
>>%vbs% echo Set objShell = Nothing
cscript //nologo %vbs%
if exist %vbs% del /f /q %vbs%

NB : C: \ Temp est le dossier dans lequel est stocké le fichier extrait (UnZip).

Et c: \ FolderName \ batch.zip est le chemin source (où sont stockés les fichiers Zip).

Modifiez le chemin d'accès complet au fichier (nom du fichier du lecteur, du dossier et du fichier Zip), en fonction de vos besoins.

Rajesh S
la source
8

Si vous utilisez Windows 10, vous pouvez utiliser l’équivalent beaucoup plus court de Powershell.

Expand-Archive -Force C:\path\to\archive.zip C:\where\to\extract\to
MegaBatchGames
la source
Qu'en est-il de l'ancienne version de Windows?
Anthony Kong
0
ZipFile="C:\Users\spvaidya\Music\folder.zip"
ExtractTo="C:\Users\spvaidya\Music\"




'If the extraction location does not exist create it.

Set fso = CreateObject("Scripting.FileSystemObject")

If NOT fso.FolderExists(ExtractTo) Then



 fso.CreateFolder(ExtractTo)

End If

'Extract the contants of the zip file.

set objShell = CreateObject("Shell.Application")

set FilesInZip=objShell.NameSpace(ZipFile).items

objShell.NameSpace(ExtractTo).CopyHere(FilesInZip)

Set fso = Nothing
Set objShell = Nothing

Le fichier vbscript suivant peut être enregistré sous le nom de fichier.vbs, puis exécuté à l'aide d'un script de traitement par lots, comme par exemple:

file.vbs

enregistrez ceci dans le fichier .bat et exécutez-le.

spoorthi vaidya
la source
0

Sous Windows 10, vous pouvez utiliser la version 17063 ou ultérieure tar.exe(similaire à celle de * nix). Ceci est également disponible dans le conteneur nanoserver docker

C:\> tar -xf archive.zip
venimus
la source
1
Heureusement, c'est bsdtar. Parce que .zipn'est pas GZip ( -z).
Daniel B
Cela fonctionne bien avec .gz et .zip
venimus
1
Oui. Parce qu'il ignore l' -zargument incorrect et utilise toujours la détection automatique.
Daniel B il y a
Merci, je l'ai enlevé. Je pensais que l’ -zon appelait le sous-module gzip, qui effectuait à son tour la détection automatique.
venimus Il y a