> 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
33,90 €Caméra de surveillance TP-Link Tapo C200 à 33,90 €
Valable jusqu'au 08 Avril

Amazon fait une promotion sur la caméra de surveillance TP-Link Tapo C200 qui passe à 33,90 € livrée gratuitement au lieu d'une quarantaine d'euros ailleurs. Cette caméra se connecte à votre réseau en WiFi et peut ensuite être contrôlée à distance. Elle offre une définition FullHD 1080p, la vision nocturne, la détection de mouvements (recevez une notification si quelque chose est détecté), une alarme sonore et visuelle. Le stockage se fait en local sur une carte MicroSD.


> Voir l'offre
GratuitOffres gratuites pour s'occuper pendant le confinement
Valable jusqu'au 07 Avril

Que cela soit pour faciliter le télétravail, favoriser l'enseignement à domicile ou se divertir, de nombreux services vous sont actuellement offerts afin de vous aider pendant le confinement dû au COVID-19. Liste mise à jour le 04/04.


> Voir l'offre
9,99 €Jeu PC Star Wars: Battlefront 2 à 9,99 €
Valable jusqu'au 08 Avril

Amazon propose actuellement le jeu PC Star Wars: Battlefront 2 à 9,99 €. Le code du jeu vous serra envoyé par email et vous pourrez le télécharger sur Origin.


> 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