Buchempfehlung
Windows System Programming
Windows System Programming
Das Kompendium liefert viele interessante Informationen zur Windows-Programmierung auf Englisch. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » Dateien und Laufwerke

Durchsuchen von Dateien (rekursiv)

Lizenz:Erster Autor:Letzte Bearbeitung:
WTFPLRedakteurMOD 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
  • Das Code-Beispiel wurde am 23.11.2013 von RedakteurMOD angelegt.
  • Die aktuellste Version wurde am 23.11.2013 von RedakteurMOD gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen