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 ?
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
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.
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')
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.
PowerShell 5.0
de Microsoft.PowerShell.Archive
vous pouvez utiliser:
E. G.:
-
créer
result.zip
à partir du dossierTest
complet:Compress-Archive -Path C:\Test -DestinationPath C:\result
-
extraire le contenu de
result.zip
dans le dossierTest
spécifié:Expand-Archive -Path result.zip -DestinationPath C:\Test
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
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
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.
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.
comment décompresser un fichier en utilisant la ligne de commande?
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
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.
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
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
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