Parcours des fichiers d'un disque

Résolu
cs_lostrailler Messages postés 26 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 29 septembre 2010 - 4 oct. 2006 à 10:19
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 4 oct. 2006 à 20:26
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

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
4 oct. 2006 à 12:34
 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
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
4 oct. 2006 à 11:37
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
0
cs_lostrailler Messages postés 26 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 29 septembre 2010
4 oct. 2006 à 11:58
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 ;-)
0
cs_lostrailler Messages postés 26 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 29 septembre 2010
4 oct. 2006 à 14:13
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. :-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_lostrailler Messages postés 26 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 29 septembre 2010
4 oct. 2006 à 16:59
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
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
4 oct. 2006 à 20: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
0
Rejoignez-nous