Code-Beispiel
Durchsuchen von Dateien (rekursiv)
Lizenz: | Erster Autor: | Letzte Bearbeitung: |
WTFPL | MOD | 23.11.2013 |
Gerade als Programmierer hat man häufig Ordner mit vielen Unterordnern und Dateien, in denen die eigenen Quellcodes schlummern. Doch wie findet man schnell den Code, den man gerade braucht?
Für diese und ähnliche Zwecke habe ich hier einen kleinen Code, der den aktuellen bzw. angegebenen Ordner rekursiv (also auch dessen Unterordner) nach bestimmten Textinhalten durchsucht.
#Include Once "dir.bi"
#Ifndef FALSE
#Define FALSE 0
#Define TRUE (Not FALSE)
#EndIf
Declare Sub searchDirectory(searchTerm As String, startDir As String, attribute As Integer, caseSensitive As Integer = FALSE)
'#####################################################
' Configure here
'#####################################################
Dim As String searchTerm = "search term"
Dim As String startDir = ""
Dim As Integer attribute = fbDirectory Or fbNormal
Dim As Integer caseSensitive = FALSE
'#####################################################
'Output
Print "Looking for search term:", searchTerm
Print
Print "-------------------------------------------------------------------------------"
Print "| Lines | Path & File |"
Print "-------------------------------------------------------------------------------"
searchDirectory(searchTerm, startDir, attribute, caseSensitive)
Print "-------------------------------------------------------------------------------"
Sleep
Sub searchDirectory(searchTerm As String, startDir As String, attribute As Integer, caseSensitive As Integer = FALSE)
Dim As String currName, temp
Dim As Integer lines, FF, attributeRet
currName = Dir(startDir & "*", attribute, @attributeRet)
While currName <> ""
Select Case attributeRet
Case fbDirectory
If currName <> "." AndAlso currName <> ".." Then
searchDirectory(searchTerm, startDir & currName & "\", attribute, caseSensitive)
'reset dir - may cost time in huge folders but will do the trick in most cases
Dim As String tempName = Dir(startDir & "*", attribute, @attributeRet)
While tempName <> currName
tempName = Dir("", attribute, @attributeRet)
Wend
EndIf
Case Else
lines = 0
FF = FreeFile
Open startDir & currName For Input As #FF
If caseSensitive Then
While Not Eof(FF)
Line Input #FF, temp
If InStr(temp, searchTerm) Then
lines += 1
EndIf
Wend
Else
While Not Eof(FF)
Line Input #FF, temp
If InStr(UCase(temp), UCase(searchTerm)) Then
lines += 1
EndIf
Wend
EndIf
If lines > 0 Then
Print "| " & Space(5 - Len(Str(lines))) & Str(lines) & " | " & startDir & currName & IIf(Len(startDir & currName) < 68, Space(67 - Len(startDir & currName)) & " |", "")
EndIf
Close #FF
End Select
currName = Dir("", attribute, @attributeRet)
Wend
End Sub
Zusätzliche Informationen und Funktionen | |||||||
---|---|---|---|---|---|---|---|
|