Parcours des fichiers d'un disque

[Résolu]
Signaler
Messages postés
26
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
29 septembre 2010
-
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
-
Bonjour à tous.

Voilà, j'ai besoin de parcourir une partition d'un disque en entier. Il faut que je récupère sur tous les fichiers de la partition des informations comme la date de création, modification, dernier accès, la taille, l'auteur, le chemin... et ensuite les envoyer vers une base de données Access pour le moment.

Mon problème vient du fait que je ne sais pas du tout comment parcourir la partition entièrement et comment m'arreter sur chaque fichier (pour en récupérer les infos).

Je sais comment récupérer les infos et comment faire la connexion avec la base et y envoyer les données.

Si vous pouviez m'aider s'il vous plait même si vous ne savez qu'un seul bout de ce que je demande.

Merci d'avance ;-)

6 réponses

Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 Bonjour,

Ci-dessous, un script (trouvé sur ce Forum), qui crée un fichier (sur le Bureau)
contenant le nom des répertoires et des fichiers.
Facilement adaptable en VB6.
Il suffit de rajouter pour chaque fichier lu les informations que tu veux.
J'ai mis un séparateur "|", ce qui te permettras de mettre le résultat dans un tableau pour export.

jean-marc

ex:

Dim ShellO: Set ShellO = CreateObject("WScript.Shell")
Dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject")
Dim SListe: Dim Schemin: Dim cpt
'Dossier à traiter
    Schemin = "D:"   'ControleEuroFactor"          'Dossier à modifier
'Dossier Bureau de windows + ""
    SListe = ShellO.SpecialFolders("Desktop")
    If Right(SListe, 1) <> "" Then SListe = SListe & ""
'Ouverture du fichier contenant l'arborescence du répertoire à traiter vers le Bureau
    Dim Fichier: Set Fichier = FSO.CreateTextFile(SListe & "Liste.txt", 1, True)
'Écrire la premiere ligne de la liste
        Fichier.WriteLine (Schemin)
'Lister l'arborescence du dossier
        ListerDossier Schemin, Fichier
'Fermeture du fichier contenant l'arborescence du répertoire à traiter
    Fichier.WriteLine
    Fichier.WriteLine "Nombre de Fichiers :  " & cpt
    Fichier.Close Set ShellO Nothing: Set FSO Nothing: Set Fichier = NothingSet ObjRep Nothing: Set ObjSubRep NothingSet ObjRepFind Nothing: Set ObjSubFile Nothing
MsgBox "Script terminé"
 
Function ListerDossier(Schemin, Fichier) 'Lister l'arborescence du dossier
On Error Resume Next
Dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject")
Dim ObjRep: Set ObjRep = FSO.GetFolder(Schemin) 'dossier
Dim ObjSubRep: Set ObjSubRep = ObjRep.SubFolders 'sous-dossiers
Dim ObjSubRepItem
    For Each ObjSubRepItem In ObjSubRep 'Traiter chaque sous-dossiers
        Fichier.WriteLine (ObjSubRepItem.Path) 'Ecrire le path dans la liste
        ListerDossier ObjSubRepItem.Path, Fichier 'traiter les sous-dossiers
    Next
    Dim ObjRepFind: Set ObjRepFind = FSO.GetFolder(Schemin) 'dossier
    Dim ObjSubFile: Set ObjSubFile = ObjRepFind.Files 'Fichiers
    Dim ObjSubFileItem
    For Each ObjSubFileItem In ObjSubFile 'Traiter chaque fichier du répertoire
        Fichier.WriteLine ObjSubFileItem.Path & "|" & ObjSubFileItem.DateCreated &_
                          "|" & ObjSubFileItem.DateLastAccessed & "|" & ObjSubFileItem.DateLastModified & "|"  'Ecrire le path dans la liste
        cpt = cpt + 1
    Next
End Function
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,


Essaie ceci pour lister dans le debug tout les fichiers contenu dans un repertoire et ses sous repertoire.
Pour etre utilisable il faut ajouter la référence Microsoft Scripting Runtime








Private Sub Form_Load() 

Dim Fso As New FileSystemObject 
Call TraiterToutLesFichier(Fso, "C:\Checkplus") 
Set Fso = Nothing 
End Sub 

Private Function TraiterToutLesFichier(Fso As FileSystemObject, StrRepertoire As String) 

Dim Rep As Folder 
Dim StrFile As File 
Dim StrSubFolder As Folder 
'Recuperation du repertoire
Set Rep = Fso.GetFolder(StrRepertoire) 

'Boucle qui affiche tout les nom de fichier contenu
'Dans la collection "Files" representant les fichiers
'Du repertoire ICI C:\
For Each StrFile In Rep.Files 
    Debug.Print StrFile.Path 
Next 

'Pour chaque sous repertoire  on rappelle la meme fonction
'avec en parametre le chemin du sousrepertoire
For Each StrSubFolder In Rep.SubFolders 
    Call TraiterToutLesFichier(Fso, StrSubFolder.Path) 
Next 
Set Rep = Nothing 
Set StrFile = Nothing 

End Function 
 







<small> Coloration syntaxique automatique [AFCK]</small>

       









 






@+,   Ju£i?n
Messages postés
26
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
29 septembre 2010

Merci beaucoup pour cette aide. Je n'ai pas le temps de tester aujourd'hui mais à lire calà parait super bête et en plus ton code est bien commenté.

Merci ;-)
Messages postés
26
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
29 septembre 2010

Merci à tous les 2 pour votre réponse. Vos 2 exemples fonctionnent très bien. Celui de JMO se rapproche plus à mon besoin. Il me reste plus qu'à modifier et rajouter quelques lignes pour tout envoyer dans ma base.

Merci encore. :-)
Messages postés
26
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
29 septembre 2010

J'ai juste oublié, pour le comptage (avec la variable cpt), il faut la passer également en paramètre sur la fonction ListerDossier sinon le comptage ne s'effectue pas
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 bonsoir,

A l'occasion, je reprendrai ce code en y mettant dialogues et fichier .xls en sortie.

Petit clin d'oeil à Julien, qui propose des solutions pour le même code
en .Net, VB6 et vbs. Et toujours commentées. Bravo ! Quelle discipline.

A+.
jean-marc