je suis débutant en progra (c’est pas mon premier metier…). Je souhaite lister le contenu d’un répertoire (sous-répertoires/fichiers), j’utilise une fonction récursive. J’ai récuperé ce bout de code et ca marche pas trop mal en VB sous VStudio2003.
'# Pointeur sur le repertoire courant
Orepcourant = oFSO.GetFolder("c:\")
'# Creation du fichier texte
oFSO = CreateObject("Scripting.FileSystemObject")
oFichierTXT = oFSO.CreateTextFile("Listing_" & Orepcourant.Name & ".txt", _
True)
'# Ecriture du repertoire courant dans le fichier
oFichierTXT.WriteLine("RÉPERTOIRE SCRUTÉ : " & Orepcourant.Path)
oFichierTXT.WriteLine("")
'# Obtention d'une collection contenant l'ensemble des repertoire du dossier
oSousRep = Orepcourant.SubFolders
'# Appel d'une fonction recursive qui va lister l'ensemble des dossiers
'# contenu dans chaque sous-dossier
'Call listingSousDossiersRecur(oSousRep, oRepCourant.Name)
Call listingSousDossiersRecur(oSousRep, Orepcourant.Path)
End Sub
'#Fonction recursive
Sub listingSousDossiersRecur(ByVal objListRep, ByVal cheminBranche)
oFichierTXT.WriteLine("## Entrée dans le répertoire " & cheminBranche)
'# Listing des fichiers
pFichier = oFSO.GetFolder(cheminBranche)
cFichiers = pFichier.Files
For Each fichier In cFichiers
oFichierTXT.WriteLine(cheminBranche & "\" & fichier.Name)
Next
'# Listing des sous-dossiers + appel recursif
For Each oSousRep In objListRep
objListSousRep = oSousRep.SubFolders
Call listingSousDossiersRecur(objListSousRep, _
cheminBranche & "\" & oSousRep.Name)
Next
End Sub[/code]
Je souhaite ajouter maintenant la possibilité de trier par date.
Exemple: faire le listing en fonction d’une date donné, lister tous les répertoires,sous-repertoires et fichiers datant de plus de deux ans.
Comment puis-je procéder ?
Si quelqu’un a une idée,
merci !
– edit –
pour la date, j’ai en partie ma réponse => propriété .DateLastModified
–edit bis–
en fait non: je souhaite désormais afficher la derniere modification effectué dans un ensemble de sous-rep…voir plus bas
Ca a un peu évolué, exit FSO…
Désormais j’ai besoin d’ afficher la date du dernier fichier modifié contenu dans un répertoire:
ma nouvelle fonction:
[code]Public Function GetLastModifiedTime(ByRef CurrDir As IO.DirectoryInfo) As Date
Dim mostrecent As Date = #1/1/1900#
For Each f As IO.FileInfo In CurrDir.GetFiles
If mostrecent < f.LastWriteTime Then
mostrecent = f.LastWriteTime
End If
Next
Dim da As Date
For Each d As IO.DirectoryInfo In CurrDir.GetDirectories
da = GetLastModifiedTime(d)
If mostrecent < da Then mostrecent = da
Next
Return mostrecent
End Function
Dim d As Date
Dim di As New IO.DirectoryInfo(tbChemin.Text)
d = GetLastModifiedTime(di)
MsgBox(d)
Dim s As New System.Text.StringBuilder
s.AppendFormat("Dir:{0}{1}Date:{2}", di, vbTab, d)
Dim f As New IO.StreamWriter("c:\test.txt")
f.WriteLine(s.ToString)
f.Close()[/code]
Ca fonctionne, cool.
Seul problème, ma fonction remonte tout en haut (tbchemin.text que j’ai défini dans une textbox) hors ce que je voudrais c’est la dernière date de chaque sous-rep.
Comment dire maintenant que je ne veux que les sous-repertoires (et pas les sous-sous-repertoires…)?
ici par exemple
date: \sous-rep1
date: \sous-rep2
date: \sous-rep3
date: \sous-repN\