Je ne pense pas qu'il existe une ligne de commande pour les fichiers ZIP intégrés à Windows (autres que compressdans le Kit de ressources Server 2003). Vous devrez utiliser un tiers. Tout le monde aime 7zip !
J'ai combiné ce script de plusieurs sources différentes pour mieux répondre à mes besoins. Copiez et collez le script dans un fichier avec l'extension ".vbs". Le script a été conçu à l'origine pour Windows XP, mais il fonctionne également sous Windows 7 x64 Ultimate - rien ne garantit que Windows conservera les différents objets Shell utilisés.
Utilisation: dans la boîte d'exécution ou la ligne de commande
Chemin du script, dossier source, fichier zip à créer (inclure le fichier .zip à la fin).
Il ne copiera pas les dossiers vides alors soyez prudent.
Voici le code vbs ---
Set Args = Wscript.Arguments
source = Args(0)
target = Args(1)
' make sure source folder has \ at end
If Right(source, 1) <> "\" Then
source = source & "\"
End If
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set zip = objFSO.OpenTextFile(target, 2, vbtrue)
' this is the header to designate a file as a zip
zip.Write "PK" & Chr(5) & Chr(6) & String( 18, Chr(0) )
zip.Close
Set zip = nothing
wscript.sleep 500
Set objApp = CreateObject( "Shell.Application" )
intSkipped = 0
' Loop over items within folder and use CopyHere to put them into the zip folder
For Each objItem in objApp.NameSpace( source ).Items
If objItem.IsFolder Then
Set objFolder = objFSO.GetFolder( objItem.Path )
' if this folder is empty, then skip it as it can't compress empty folders
If objFolder.Files.Count + objFolder.SubFolders.Count = 0 Then
intSkipped = intSkipped + 1
Else
objApp.NameSpace( target ).CopyHere objItem
End If
Else
objApp.NameSpace( target ).CopyHere objItem
End If
Next
intSrcItems = objApp.NameSpace( source ).Items.Count
wscript.sleep 250
' delay until at least items at the top level are available
Do Until objApp.NameSpace( target ).Items.Count + intSkipped = intSrcItems
wscript.sleep 200
Loop
'cleanup
Set objItem = nothing
Set objFolder = nothing
Set objApp = nothing
Set objFSO = nothing
Cela semble prometteur, mais j'ai l'erreur "Objet requis: 'objApp.NameSpace (...)' sur la ligne 16
pihentagy
J'ai le même problème. Le code ci-dessus ne fonctionne pas ou a besoin d'éléments supplémentaires dans le système que l'affiche a oublié de mentionner.
Shaamaan
Il utilise WScript (environnement vbs) et plusieurs objets Shell. Tous ont été installés par défaut dans Windows XP (entreprise?) Et Win 7 Ultimate x64. Peut-être qu'ils sont plus là pour Win8?
WSkid
2
Il est possible d'exécuter le script PowerShell à partir de BAT. Le fichier de batte reçoit le chemin vers dir à compresser et le nom de fichier zip en tant que paramètres.
@echo off
setlocal
rem First parameter - path to dir to be zipped
rem Second parameter- zip file name
set sourceDir=%1
set zipFile=%2
rem Create PowerShell script
echo Write-Output 'Custom PowerShell profile in effect!' > %~dp0TempZipScript.ps1
echo Add-Type -A System.IO.Compression.FileSystem >> %~dp0TempZipScript.ps1
echo [IO.Compression.ZipFile]::CreateFromDirectory('%sourceDir%','%~dp0%zipFile%') >> %~dp0TempZipScript.ps1
rem Execute script with flag "-ExecutionPolicy Bypass" to get around ExecutionPolicy
PowerShell.exe -ExecutionPolicy Bypass -Command "& '%~dp0TempZipScript.ps1'"
del %~dp0TempZipScript.ps1
endlocal
Mais quel serait l'avantage de cette approche? Pourquoi ne pas simplement écrire le script PowerShell dans un fichier fixe et le laisser accepter les paramètres?
Seth
J'ai essayé toutes les autres solutions. C’est la seule solution de sécurité qui fonctionne parfaitement. L’avantage le plus important est l’utilisation des commandes natives de powershell et l’inutilité de créer l’ancien VBScript.
Desmati
Cela a fonctionné pour moi sur un vieil ordinateur portable d'entreprise windows7 en 2019.
simbo1905
1
Voici un excellent lien qui montre comment compresser un fichier à l'aide de commandes natives Windows.
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 une ligne de commande que j'ai également trouvée. Une solution consiste à ouvrir 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 qui est si commun qu'il semble presque l'être.
Vous devriez inclure les instructions dans votre réponse. Si les liens se détériorent, votre réponse sera sans valeur ...
MoonSire
1
C'est une vieille question, mais sa pertinence est toujours d'actualité.
Bien sûr, Windows a son propre algorithme de compression intégré pour l’utilisation de fichiers zip, mais il ne fonctionne vraiment pas comparé au produit open source 7zip que l’on trouve ici http://www.7-zip.org/
D'autres ont déjà évoqué différentes méthodes d'utilisation des fonctions intégrées de Windows. Ma solution nécessite l'installation du logiciel supplémentaire.
7Zip prend en charge une large gamme de fichiers, y compris ZIP, RAR, CAB et ISO, ainsi que son propre format 7z.
Vous pouvez afficher l'aide en ligne de commande: "C: \ Program Files \ 7-Zip \ 7z.exe" --help
pour effectuer une simple addition à l'archive zip:
"C: \ Program Files \ 7-Zip \ 7z.exe" un nom de fichier.zip c: \ chemin
Ce n’était pas ce que je voulais faire, mais cela fonctionnera pour moi maintenant. C'est un truc pratique à savoir.
bballdave025
0
Je vais poster quelque chose en rapport avec WSkids répondre que malheureusement je ne peux pas utiliser la fonction de commentaire.
L'utilisation de la méthode CopyHere () dans VBS soulève plusieurs problèmes. L'un de ces problèmes est que la méthode retourne immédiatement pendant que le processus de copie démarre en arrière-plan, alors que plusieurs appels à CopyHere () s'interféreront et que le ZIP ne sera pas créé correctement. Une boucle d'attente est nécessaire ici pour résoudre ce problème. Ma boucle d'attente est basée sur une réponse à un problème similaire posté ici .
Voici une version mise à jour qui corrige l'erreur "Object required" signalée par pihentagy . C'est un problème de synchronisation car le fichier ZIP nouvellement créé est inclus dans la collection Items lorsque le script est exécuté sur des machines rapides.
set Args = WScript.Arguments
source = Args(0)
' remove trailing slashes as we add slashes when needed later
while Right(source, 1) = "\"
source = Mid(source, 1, Len(source) - 1)
wend
target = Args(1)
' create empty ZIP file
set fso = CreateObject("Scripting.FileSystemObject")
set zip = fso.OpenTextFile(target, 2, vbtrue)
' write ZIP header, this ensures that Windows recognizes the file as "ZIP Folder"
zip.Write "PK" & Chr(5) & Chr(6) & String(18, Chr(0))
zip.Close
set zip = nothing
set fso = nothing
' copy files to ZIP file
set app = CreateObject("Shell.Application")
set sourceFolderObj = app.NameSpace(source)
set targetFolderObj = app.NameSpace(target)
for each item in sourceFolderObj.Items
itemPath = source & "\" & item.Name
copyItem = false
' ZIP file is included in Items collection and is recognized as folder, thus skip it to avoid script errors
if itemPath <> target then
if item.IsFolder then
if item.GetFolder.Items().Count = 0 then
' folder is empty, skip it as empty folders can't be compressed
else
copyItem = true
end if
else
copyItem = true
end if
end if
if copyItem then
targetFolderObj.CopyHere item
' wait until the file appears in the ZIP file,
' this is needed because CopyHere() returns immediately after starting an asynchronous copy process
' (starting multiple asynchronous copy will not work as it causes error messages, an invalid ZIP file, ...)
while (targetFolderObj.ParseName(item.Name) is nothing)
WScript.Sleep 1
wend
end If
next
set targetFolderObj = nothing
set sourceFolderObj = nothing
set app = nothing
compress.exe
.Réponses:
À partir de PowerShell 5 (février 2016), vous pouvez utiliser "Compress-Archive":
Ou:
http://msdn.microsoft.com/powershell/reference/5.0/microsoft.powershell.archive/compress-archive
la source
Je ne pense pas qu'il existe une ligne de commande pour les fichiers ZIP intégrés à Windows (autres que
compress
dans le Kit de ressources Server 2003). Vous devrez utiliser un tiers. Tout le monde aime 7zip !la source
J'ai combiné ce script de plusieurs sources différentes pour mieux répondre à mes besoins. Copiez et collez le script dans un fichier avec l'extension ".vbs". Le script a été conçu à l'origine pour Windows XP, mais il fonctionne également sous Windows 7 x64 Ultimate - rien ne garantit que Windows conservera les différents objets Shell utilisés.
Utilisation: dans la boîte d'exécution ou la ligne de commande
Chemin du script, dossier source, fichier zip à créer (inclure le fichier .zip à la fin).
Il ne copiera pas les dossiers vides alors soyez prudent.
Voici le code vbs ---
la source
Il est possible d'exécuter le script PowerShell à partir de BAT. Le fichier de batte reçoit le chemin vers dir à compresser et le nom de fichier zip en tant que paramètres.
la source
Voici un excellent lien qui montre comment compresser un fichier à l'aide de commandes natives Windows.
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?
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 une ligne de commande que j'ai également trouvée. Une solution consiste à ouvrir 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 qui est si commun qu'il semble presque l'être.
Windows 7 dispose-t-il de la décompression sur la ligne de commande installée par défaut?
https://stackoverflow.com/questions/1021557/how-to-unzip-a-file-using-the-command-line
la source
C'est une vieille question, mais sa pertinence est toujours d'actualité.
Bien sûr, Windows a son propre algorithme de compression intégré pour l’utilisation de fichiers zip, mais il ne fonctionne vraiment pas comparé au produit open source 7zip que l’on trouve ici http://www.7-zip.org/
D'autres ont déjà évoqué différentes méthodes d'utilisation des fonctions intégrées de Windows. Ma solution nécessite l'installation du logiciel supplémentaire.
7Zip prend en charge une large gamme de fichiers, y compris ZIP, RAR, CAB et ISO, ainsi que son propre format 7z.
Vous pouvez afficher l'aide en ligne de commande: "C: \ Program Files \ 7-Zip \ 7z.exe" --help
pour effectuer une simple addition à l'archive zip:
"C: \ Program Files \ 7-Zip \ 7z.exe" un nom de fichier.zip c: \ chemin
la source
Voici une autre idée, provenant de 4 sources différentes; pas mes idées, mais je les ai compilées pour que cela fonctionne pour moi
la source
Imaginez que vous vouliez compresser le même dossier que celui sur lequel vous vous trouvez sans invite, en ouvrant une fenêtre PowerShell:
la source
Je vais poster quelque chose en rapport avec WSkids répondre que malheureusement je ne peux pas utiliser la fonction de commentaire.
L'utilisation de la méthode CopyHere () dans VBS soulève plusieurs problèmes. L'un de ces problèmes est que la méthode retourne immédiatement pendant que le processus de copie démarre en arrière-plan, alors que plusieurs appels à CopyHere () s'interféreront et que le ZIP ne sera pas créé correctement. Une boucle d'attente est nécessaire ici pour résoudre ce problème. Ma boucle d'attente est basée sur une réponse à un problème similaire posté ici .
Voici une version mise à jour qui corrige l'erreur "Object required" signalée par pihentagy . C'est un problème de synchronisation car le fichier ZIP nouvellement créé est inclus dans la collection Items lorsque le script est exécuté sur des machines rapides.
la source
Here'a ma tentative de résumer les fenêtres des capacités intégrées pour la compression et la décompression - https://stackoverflow.com/questions/28043589/how-can-i-compres-zip-and-uncopress-unzip-files-and-folders -with-batch-f
avec quelques solutions données qui devraient fonctionner sur presque toutes les machines Windows.
la source