> Tous les forums > Forum Autres langages
 Quel langage pour extraire un fichier de zip 3e niveau
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
griggione
  Posté le 10/02/2018 @ 12:05 
Aller en bas de la page 
Grand Maître astucien

Bonjour tous,

Enfin un peu de travail sérieux.

Mon arborescence :
[code]
01
...bilans_saisis_20180105.zip
...bilans_saisis_20180107.zip
...bilans_saisis_20180108.zip
......PUB_CA_972501571_6901_1972B00157_2017_B2017047456.zip
......PUB_CA_972505804_6901_1972B00580_2017_B2017047808.zip
......PUB_CA_997625801_6901_1976B00323_2016_B2017047308.zip
.........PUB_CA_972501571_6901_1972B00157_2017_B2017047456.donnees.xml
[/code]

Les zip bilans_saisis sont environ 50, les premiers zip PUB_CA sont environ 5000 et dans chaque un .xml.
Ceux sont ces .xml que j'aimerais récupérer.

Pour l'instant, avec Batch, je me sers de winRar pour les zip et le .bat fini l'extraction.
Mais ça m'oblige à avoir trois dossiers, 1 pour le dossier, 2 pour récupérer les zip, 3 pour les xml.

QUESTION :
Quel langage pour faire tout ça sans winRar. Direct et si possible que 2 dossiers, un celui des archives et 2 celui des xml.



Modifié par griggione le 10/02/2018 12:07
Publicité
Titus68
 Posté le 10/02/2018 à 17:15 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Pour l'extraction en batch avec 7zip çà marche bien :

Exemple de commande :

"C:\Program Files\7-Zip\7z.exe" e t.zip -ote *.xml -r

e : extraire

t.zip fichier à extraire

-ote : écrire en sortie (-o) dans le dossier par exemple te

*.xml pour n'extraire que les xml

-r : récursif (explore les sous-dossiers)



Modifié par Titus68 le 10/02/2018 17:15
griggione
 Posté le 10/02/2018 à 18:53 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Bonsoir Titus68

Titus68 a écrit :

Pour l'extraction en batch avec 7zip çà marche bien :

OK mais ça marche trés bien aussi avec winRar comme dit au-dessus.

Ma recherche est :

Message original par griggione

QUESTION :
Quel langage pour faire tout ça sans winRar. Direct et si possible que 2 dossiers, un celui des archives et 2 celui des xml.

Comment faire un script, du moins quel langage pour faire tout ça direct.

Donc sans log externe.

Titus68
 Posté le 11/02/2018 à 02:00 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Sans passer par un logiciel externe :

faire une recherche google avec "vbs extract files" : il y a plein d'exemples.

Sinon la plupart des logiciels fournissant des api (interface de communication), il est souvent possible à partir de PowerShell, vbscript ou vba d'appeler des fonctions d'un autre logiciel tel que 7zip (par exemple pour 7zip il existe des sdk sur :

http://7-zip.org/sdk.html)

Disons que je ne comprends pas trop pourquoi tu souhaites faire des scripts alors qu'en ligne de commande (même dos) avec winrar ou 7zip tu peux déjà faire pas mal de choses ?

Selon moi, la plupart des logiciels comme winzip, winrar ou 7zip étant vraiment spécialisés il y a plus de chances qu'ils prennent plus de format en compte et gèrent mieux les fichiers compressés qu'un simple script.

griggione
 Posté le 13/02/2018 à 11:58 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien
Titus68 a écrit :

faire une recherche google avec "vbs extract files" : il y a plein d'exemples.

RE

Ben justement, j'ai déjà regardé et pas trouvé grand chose, je vais y retourner.

Il doit bien y avoir un langage qui fasse l'extraction des .xml sans passer par rar ou autre.

Constance
 Posté le 13/02/2018 à 13:51 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Salut .o/

Est-ce que ça : https://msdn.microsoft.com/en-us/library/system.io.compression.zipfile(v=vs.110).aspx te donne une piste ?

griggione
 Posté le 13/02/2018 à 17:04 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Bonjour Constance

Merci pour le lien.

Ok, il y a les scripts en C# ou VB, mais enregistrer sous ....... quoi pour lancer la procédure ?

En tout cas on est dans la bonne voie

Titus68
 Posté le 13/02/2018 à 22:50 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Pour l'exemple de Constance, je pense qu'il faut le logiciel de développement Visual Studio, avant il existait des versions "Express" gratuites maintenant il me semble que c'est la version "community" pour créer des programmes style .exe :

https://www.visualstudio.com/fr/downloads/

Sinon en utilisant vbscript déjà présent sous windows :

http://www.codeexperts.com/showthread.php?221-zip-and-unzip-files-with-vbs

Il faut copier, adapter et enregistrer le code dans un fichier .txt (avec le bloc-notes par exemple) puis renommer le fichier .txt par .vbs (remplacer l'extension .txt par .vbs) pour obtenir un script vbscript qu'on peut exécuter.

Existe aussi en PowerShell :

https://www.howtogeek.com/tips/how-to-extract-zip-files-using-powershell/

A mon avis le vbscript est le plus simple, après je ne sais pas si on peut paramétrer plus la fonction de décompression.



Modifié par Titus68 le 13/02/2018 22:52
griggione
 Posté le 14/02/2018 à 07:57 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

RE

Bon ben avec tout ça, j'ai de quoi m'occuper pour un moment.

Je teste et je reviens vers vous.

Publicité
griggione
 Posté le 17/02/2018 à 11:41 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

RE

Constance a écrit :

Est-ce que ça : https://msdn.microsoft.com/en-us/library/system.io.compression.zipfile(v=vs.110).aspx te donne une piste ?

Je suis allé voir et ma foi j'ai essayé ceci, mais rien ne bouge :

Imports System.IO
Imports System.IO.Compression

Module Module1

Sub Main()
Dim startPath As String = "C:\decompresser\01\*.zip\start"
Dim zipPath As String = "c:\decompresser\zip\result.zip"
Dim extractPath As String = "c:\decompresser\xml\extract"

ZipFile.CreateFromDirectory(startPath, zipPath)

ZipFile.ExtractToDirectory(zipPath, extractPath)
End Sub

End Module

Ensuite ...

Titus68 a écrit :

Sinon en utilisant vbscript déjà présent sous windows :

http://www.codeexperts.com/showthread.php?221-zip-and-unzip-files-with-vbs

Là non plus, ça ne donne rien :

pathToZipFile = "C:\decompresser\01\*.zip"
extractTo = "C:\decompresser\xml"

set sa = CreateObject ("Shell.Application")
set filesInzip = sa.NameSpace (pathToZipFile) .items
sa.NameSpace (extractTo) .CopyHere (fichiersInzip)

Aprés, PowerShell, connais pas, je ne sais même pas quelle extension utiliser , ni comment exécuter.



Modifié par griggione le 17/02/2018 11:47
griggione
 Posté le 17/02/2018 à 16:30 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

RE

J'ai modifié l'emplacement des dossiers et .bat

Dans mes recherches, en powershell, j'ai trouvé ceci :

@echo off
powershell.exe -nologo -noprofile -command & { Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('C:\decompresser\01\*.zip', 'C:\decompresser\xml'); }
echo. &pauseJ'ai modifié l'emplacement des dossiers et .bat

Une fois exécuté, j'ai ce message :

Titus68
 Posté le 17/02/2018 à 18:29 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Pour le fichier .vbs

DirZip="c:\MonCheminDuFicherZip"

FicZip="MonFichier.zip"

DirUnzip="c:\MonDossierDecompression"

pathToZipFile = DirZip & "\" & Ficzip

extractTo = DirUnzip

set sa = CreateObject("Shell.Application")

set filesInzip = sa.NameSpace(pathToZipFile).items

sa.NameSpace (extractTo).CopyHere(fichiersInzip)

Remplacer :

c:\MonCheminDuFicherZip par le path de ton fichier zip

MonFichier.zip par le nom de ton fichier zip

c:\MonDossierDecompression par le nom d'un dossier d'extraction

Attention : pathToZipFile) .items : pas d'espace entre ) et .items

(extractTo) .CopyHere (fichiersInzip) idem : (extractTo).CopyHere(fichiersInzip)

J'ai testé çà fonctionne bien et c'est même récursif.

Pour le PowerShell en otant & entre -command & { çà se lance mais il ne cherche pas récursivement dans l'archive il me semble.

Avec W10 il y a même une fonction encore plus simple mais non récursive non plus (pas besoin de system.IO ... :

Expand-archive

Voir https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.archive/expand-archive?view=powershell-5.1



Modifié par Titus68 le 17/02/2018 18:31
griggione
 Posté le 20/02/2018 à 11:38 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Bonjour Titus68

DirZip="C:\decompresser\01"
FicZip="*.zip"
DirUnzip="C:\decompresser\xml"

pathToZipFile = DirZip & "\" & Ficzip
extractTo = DirUnzip

set sa = CreateObject ("Shell.Application")
set filesInzip = sa.NameSpace (pathToZipFile).items
sa.NameSpace (extractTo) .CopyHere (fichiersInzip)

Je le lance grâce à un .bat mais ça ne donne rien.

La fenêtre se lance un 10eme de seconde.

Titus68 a écrit :

Pour le PowerShell en otant & entre -command & { çà se lance mais il ne cherche pas récursivement dans l'archive il me semble.

+1

Titus68
 Posté le 22/02/2018 à 17:27 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Griggione,

Ce script je pense qu'il ne fonctionne que pour un fichier zip (tu as mentionné *.zip).

Indique un nom de fichier zip et essaye déjà avec un seul fichier. Pour ce qui de traiter plusieurs fichiers on peut voir après.

(extractTo) .CopyHere(fichiersInzip) : supprime les espaces => (extractTo).copyHere(fichiersInzip)

A la fin de ton batch, rajouter la ligne :

pause

Comme çà si dans ton vbs une erreur est détectée la fenêtre de commande restera ouverte et tu devrais avoir un message d'erreur qu'il faudrait nous indiquer.

griggione
 Posté le 23/02/2018 à 07:27 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

RE

D'abord mon .bat :

c:\windows\system32\cscript.exe c:\decompresser\decompresser_xml_2.0.5.vbs
pause

OK je modifie mon vbs, FicZip="bilans_saisis_20180105.zip" et l'espace:

DirZip="C:\decompresser\01"
FicZip="bilans_saisis_20180105.zip"
DirUnzip="C:\decompresser\xml"

pathToZipFile = DirZip & "\" & Ficzip
extractTo = DirUnzip

set sa = CreateObject ("Shell.Application")
set filesInzip = sa.NameSpace (pathToZipFile).items
sa.NameSpace (extractTo).CopyHere (fichiersInzip)

ce qui donne :

je re-modifie mon .vbs, FicZip="C:\decompresser\bilans_saisis_20180105.zip" :

DirZip="C:\decompresser\01"
FicZip="C:\decompresser\bilans_saisis_20180105.zip"
DirUnzip="C:\decompresser\xml"

pathToZipFile = DirZip & "\" & Ficzip
extractTo = DirUnzip

set sa = CreateObject ("Shell.Application")
set filesInzip = sa.NameSpace (pathToZipFile).items
sa.NameSpace (extractTo).CopyHere (fichiersInzip)

ce qui donne :

Donc pas d'extraction les deux fois.
Peut-être parce que c'est en double rideaux, je remet l'arborescence :

01
...bilans_saisis_20180105.zip
......PUB_CA_B2017047456.zip
.........PUB_CA_B2017047456.donnees.xml

dossier > zip > zip > fichier à extraire



Modifié par griggione le 23/02/2018 07:38
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
19,99 €Carte mémoire microSDXC UHS-I SanDisk A1 Ultra 128 Go à 19,99 €
Valable jusqu'au 04 Avril

Le vendeur sérieux Base propose actuellement sur Amazon la carte mémoire microSDXC UHS-I SanDisk A1 Ultra 128 Go à 19,99 € livrée gratuitement. Cette carte mémoire offre des vitesses jusqu'à 100 Mo/s et est idéale pour les téléphones, caméras et appareils photo HD.


> Voir l'offre
279 €Casque sans fil à réduction de bruit Sony WH-1000XM3 (Hi-Res Audio, Bluetooth/NFC) à 279 €
Valable jusqu'au 07 Avril

Amazon propose actuellement le casque sans fil à réduction de bruit et Hi-Res Audio Sony WH-1000XM3 à 279 € livré gratuitement. On le trouve ailleurs à partir de 360 €. Jusqu'à 30h d'autonomie avec la fonction de réduction de bruit activée et fonction Quick Attention pour réduire instantanément le volume de votre musique et pouvoir suivre une conversation. 


> Voir l'offre
12,90 €Windows 10 Pro 32/64 bits OEM à 12,90 €
Valable jusqu'au 05 Avril

Le vendeur sérieux DIGITAL FR propose sur Amazon  la clé d'activation pour Windows 10 professionnel en français 32 bits / 64 bits à 12,90 €. Cette clé livrée par email fonctionne avec l'outil d'installation et de création de support de Microsoft que vous pouvez télécharger ici ou directement avec l'ISO de Windows 10 Pro. De quoi installer légalement Windows 10 Pro sur un PC. Pour en savoir plus sur l'achat et l'installation d'une clé OEM de Windows 10, suivez les indications de notre dossier pratique.


> Voir l'offre

Sujets relatifs
Extraire une image d'un fichier SWF
macro excell pour ouverture fichier avec password
quel SGBD apprendre pour debutant ?
fichier entête langage C
recherche un logiciel pour ouvrir un fichier
aide pour fichier .bat
quel langage ?
Petit coup de main pour un fichier "batch" svp
dll pour le langage C
Parsing d'un fichier[Langage C]
Plus de sujets relatifs à Quel langage pour extraire un fichier de zip 3e niveau
 > Tous les forums > Forum Autres langages