Il est possible de compresser des fichiers sans installer de logiciel supplémentaire (je l'ai testé). La solution est la suivante :
Exécutez ceci dans une fenêtre de ligne de commande pour créer un fichier ZIP nommé C:\someArchive.zip
contenant tous les fichiers du dossier C:\test3
:
CScript zip.vbs C:\test3 C:\someArchive.zip
Où le fichier zip.vbs
contient :
' Récupérer les arguments de la ligne de commande.
Set objArgs = WScript.Arguments
Set FS = CreateObject("Scripting.FileSystemObject")
InputFolder = FS.GetAbsolutePathName(objArgs(0))
ZipFile = FS.GetAbsolutePathName(objArgs(1))
' Créer un fichier ZIP vide.
CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar)
Set objShell = CreateObject("Shell.Application")
Set source = objShell.NameSpace(InputFolder).Items
objShell.NameSpace(ZipFile).CopyHere(source)
' Nécessaire pour laisser le processus ZIP s'exécuter
' Si ce script échoue de manière aléatoire ou si le fichier ZIP est incomplet,
' augmentez simplement à plus de 2 secondes
wScript.Sleep 2000
Je ne l'ai pas testé pour les chemins et les noms de fichiers contenant des espaces. Cela peut fonctionner si des guillemets sont placés autour des paramètres de ligne de commande.
Fonctionnement : la fonctionnalité de compression intégrée dans Windows (Windows XP et ultérieur ?) est exposée via des interfaces COM à partir de l'interface Windows shell, explorer.exe - c'est la partie "Shell.Application". Cette interface COM peut être utilisée à partir d'un script VBScript car un tel script peut accéder aux composants COM. Pour rendre le script entièrement autonome, il crée un fichier ZIP vide pour commencer (on pourrait également créer un fichier ZIP vide et le copier sur le système cible avec le script VBScript).
VBScript est installé par défaut dans chaque version de bureau de Microsoft Windows depuis Windows 98.
CScript.exe
fait partie de Windows Script Host. Windows Script Host est distribué et installé par défaut sur Windows 98 et les versions ultérieures de Windows. Il est également installé si Internet Explorer 5 (ou une version ultérieure) est installé.
1 votes
Pouvez-vous utiliser PowerShell ou un script WSH ? Cela pourrait être le seul moyen d'utiliser la gestion intégrée des fichiers zip de Windows en ligne de commande. Sinon, comme l'a souligné Molly, vous aurez besoin d'un outil tiers.
2 votes
Ainsi, vous envoyez à quelqu'un un fichier batch et vous ne pouvez pas lui envoyer un petit fichier gzip.exe statiquement lié ?
0 votes
La question de l'OP est excellente (accusation étrange de @quackquixote mise à part). Puisque Windows fournit cela en un seul clic sous SendTo, il devrait y avoir une commande utilisable dans un fichier BAT. C'est donc une bonne question même si la réponse est non et qu'il faut (ridiculement) recourir à l'utilisation d'un outil tiers qui peut être équivalent ou non.
0 votes
Ceci est lien par Tomas a un script bien écrit pour zipper le contenu d'un dossier. Pour le faire fonctionner, il suffit de copier le script dans un fichier batch et de l'exécuter en spécifiant le dossier à zipper (source). Pas besoin de mentionner le répertoire de destination car il est défini par défaut dans le script sur le bureau ("%USERPROFILE%\Desktop").
4 votes
Le plus simple serait, dans une invite de commande :
powershell.exe Compress-Archive fichier-à-compresser.txt fichier-comprimé.zip
(cela fonctionne également avec un dossier)0 votes
Cette question est maintenant liée depuis SS64! (SS64 est une référence de premier plan.)