VB-Tec.de Visual Basic - Technik, FAQ, Tricks, BeispieleHome / System / Datei / FindFile Laufwerke nach einer bestimmten Datei durchsuchen |
| Historie | |
| 26.03.2001 | Hinzugefügt: Laufwerke bestimmen; Beispiel angepasst |
| 15.07.2000 | Komplexeres Beispiel hinzugefügt |
| 29.06.2000 | Erste Version: Verzeichnis durchsuchen |
Manchmal ist es nötig, eine bestimmte Datei im Filesystem zu lokalisieren. Da stellen sich zwei Probleme:
Die unten vorgestellten Funktionen LogicalDrives und FindFile beantworten genau diese Fragen.
Alle vorhandenen Laufwerke werden nach einer bestimmten Programmdatei durchsucht, welche ggf. auch gestartet wird:
Dim Path As String
Dim Laufwerk As Variant
For Each Laufwerk In LogicalDrives
Path = FindFile(Laufwerk, "programm.exe")
If Len(Path) Then
Shell Path, vbMaximizedFocus
Exit For
End If
Next Laufwerk
Die folgende Funktion gibt eine Aufzählung aller logischen Laufwerke (im Format "X:") zurück:
'Deklarationsteil:
Private Declare Function GetLogicalDriveStringsA Lib "kernel32" ( _
ByVal nBufferLength As Long, _
ByVal lpBuffer As String _
) As Long
'Funktion:
Function LogicalDrives() As Collection
Dim s As String * 128
Dim i As Long
'API aufrufen:
GetLogicalDriveStringsA Len(s), s
i = InStr(s, vbNullChar & vbNullChar) 'Länge
'Collection füllen:
Set LogicalDrives = New Collection
For i = 1 To i Step 4
LogicalDrives.Add Mid$(s, i, 2)
Next i
End Function
Mit folgender Routine kann ein gegebenes Verzeichnis Path einschließlich Unterordnern nach einer bestimmten Datei File durchsucht werden:
'Deklarationsteil:
Private Declare Function SearchTreeForFile Lib "imagehlp.dll" ( _
ByVal RootPath As String, _
ByVal FileName As String, _
ByVal OutputPath As String _
) As Long
'Funktion:
Function FindFile( _
ByVal Path As String, _
ByVal File As String _
) As String
Dim s As String * 1024
If SearchTreeForFile(Path, File, s) _
Then FindFile = Left$(s, InStr(s, vbNullChar) - 1)
End Function
Die Funktion gibt bei Erfolg den vollständigen Pfad der ersten gefundenen Datei zurück. Sollen alle Dateien gemäß eines Suchpatterns gefunden werden, so ist übrigens deutlich mehr Aufwand nötig (siehe FindFiles).
© Jost Schwider, 29.06.2000-26.03.2001 - http://vb-tec.de/findfile.htm