Ho visto che tra i Vb6isti, alcuni non hanno ancora dimestichezza con la funzione Dir per fare la ricerca ricorsiva dei files presenti in una cartella e in tutte le sue sottocartelle.
Ovviamente se non si vuole la ricerca ricorsiva è sufficiente fare una piccola modifichina al programma.
Il modulo, scaricabile a questo indirizzo genera una listview e può scrivere un file di testo con i dati estratti.
La funzione principale è determinata dal blocco:
Sub CercaFile(ByVal NomeDir As String, ByVal NomeFile As String)
Dim FileFound As String
Dim PathNames() As String
Dim FileNames() As String
Dim k As Integer
Dim li As ListItem
k = -1
If Right$(NomeDir, 1) <> "\" Then NomeDir = NomeDir & "\"
FileFound = Dir$(NomeDir & NomeFile)
Do While FileFound <> ""
If FileFound <> "." And FileFound <> ".." Then
k = k + 1
ReDim Preserve FileNames(k)
FileNames(k) = FileFound
Print #file, NomeDir + FileFound
End If
FileFound = Dir$
Loop
If k <> -1 Then
For k = 0 To UBound(FileNames)
iRighe = iRighe + 1
Set li = ListView1.ListItems.Add(, , Format(iRighe, "00000")) ' righe
li.SubItems(1) = NomeDir
li.SubItems(2) = FileNames(k)
Next
End If
k = -1
FileFound = Dir(NomeDir, vbDirectory)
Do While FileFound <> ""
If FileFound <> "." And FileFound <> ".." Then
If (GetAttr(NomeDir & FileFound) And vbDirectory) = vbDirectory Then
k = k + 1
ReDim Preserve PathNames(k)
PathNames(k) = FileFound
End If
End If
FileFound = Dir
Loop
If k = -1 Then Exit Sub
For k = 0 To UBound(PathNames)
CercaFile NomeDir & PathNames(k), NomeFile
Next
End Sub
Come si può vedere vengono ricercati prima i file singoli e poi le sottocartelle, per ciascuna delle quali è richiamata ricorsivamente la stessa funzione fino ad esaurimento delle directory / sottodirectory.
2 commenti:
molto intiresno, grazie
leggere l'intero blog, pretty good
Posta un commento