Ordner nach Text Durchsuchen

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Ordner nach Text Durchsuchen

Beitrag von X360 Andy »

Da ich Heute mittag einen Ordner mit 100Php nach einem Wort absuchen musste ich aber kein Tool kannte und mir auch Google nicht geholfen hat , hab ich mir kurzer Hand was eigenes geschrieben.

Gerade noch en Beispiel dazu geschrieben ....
Vieleicht kann man es ja gebrauchen oder auch erweitern(auch wenn es nichts besonders ist)

Vieleicht hab ich Ts-Soft auf eine Idee gebracht damit ein Plugin für seinen Commander zu machen?

Was man vieleicht besser hätte machen können
-Unterordner durchsuchen
-Alle ergebnisse auflisten
-Weitersuchen

Code: Alles auswählen

Global Pattern.b
Global Zeile.l
NewList Suche.s()

SuchOrdner$ = PathRequester("Bitte wählen Sie einen Pfad aus", "C:\")
Suchwort$ = InputRequester("Suchwort", "Bitte Suchwort eingeben", "")

Procedure Findwort(SuchOrdner$, SuchWort$, Pattern$ = "", Unterordner = 0)
  Shared Suche(), Anzahl.l
  
  If Not Pattern$
    Pattern$ = "*.*"
  EndIf
  
  If Right(SuchOrdner$, 1)<>"\"
    SuchOrdner$ + "\"
  EndIf
  
  exam = ExamineDirectory(#PB_Any, SuchOrdner$, "*.*")
  If Exam
    While NextDirectoryEntry(exam)
      d$ = DirectoryEntryName(exam)
      If DirectoryEntryType(exam) = #PB_DirectoryEntry_File
        
        Pattern.b = 0
        If Pattern$ = GetExtensionPart(d$)
          Pattern.b = 1
        ElseIf pattern$ = "*.*"
          Pattern.b = 1
        EndIf
        
        If ReadFile(0, SuchOrdner$ + d$) And Pattern.b = 1
          While Eof(0) = 0
            Zeile$ = ReadString(0)
            Zeile.l + 1
            Anfang.l = FindString(Zeile$, Suchwort$, 0)
            If Anfang.l
              Datei$ = d$
              AddElement(Suche())
              Suche() = Suchordner$ + Datei$
              AddElement(Suche())
              Suche() = Str(Zeile.l)
              AddElement(Suche())
              Suche() = Str(Anfang.l)
              Anzahl.l + 1
            EndIf
          Wend
          Zeile.l = 0
          CloseFile(0)
        EndIf
      ElseIf d$<>"." And d$<>".."
        If Unterordner = 1
          Findwort(SuchOrdner$ + d$, SuchWort$, Pattern$)
        EndIf
      EndIf
    Wend
    FinishDirectory(exam)
  EndIf
  
  If Not anzahl.l
    ProcedureReturn 0
  Else
    ProcedureReturn Anzahl.l
  EndIf
  
EndProcedure

Anzahl.l = Findwort(SuchOrdner$, SuchWort$, "", 0)
If Anzahl.l
  Debug "Treffer: " + Str(Anzahl.l)
  Debug ""
  ForEach Suche()
    Debug Suche()
    Nexte + 1
    If nexte = 3
      nexte = 0
      Debug "-----"
    EndIf
  Next
Else
  Debug "Suche Erfolglos"
EndIf
Zuletzt geändert von X360 Andy am 26.05.2009 12:17, insgesamt 2-mal geändert.
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Kann man nich auch mit der ganz Normalen Windows-Suche den Inhalt von Dateien durchsuchen?
(\/) (°,,,°) (\/)
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

KeyKon hat geschrieben:Kann man nich auch mit der ganz Normalen Windows-Suche den Inhalt von Dateien durchsuchen?
Nein diese durchsucht nur die Datei Namen, nicht den Inhalt (Zumindest bei Win7)

EDIT

Oh geht doch .... :cry:
Das ist ein Schlag ins Gesicht ....
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

siehs positiv: du hast dabei sogar zwei Dinge gelernt.
1. wie man's selber macht und
2. dass Windows es von Haus aus kann
Bild
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

Kaeru Gaman hat geschrieben:siehs positiv: du hast dabei sogar zwei Dinge gelernt.
1. wie man's selber macht und
2. dass Windows es von Haus aus kann
Bild
und dass Windows mehr kann als man von ihm erwartet.
Win11 x64 | PB 6.20
walter741
Beiträge: 68
Registriert: 26.10.2008 09:21
Computerausstattung: P4, 2600, 1,5GB Ram, XP SP3
Wohnort: Wien

Beitrag von walter741 »

Hallo

Bei mir durchsucht WinXP nur einige Dateien nach einen Text.
Einige Dateien werden NICHT durchsucht.

Beispiel:
1. In Purebasic einen CodeBaustein mit dem Namen ABCDE12345 erstellen.

2. Mit dem Explorer nach ABCDE12345 innerhalb einer Datei suchen.

Bei mir findet der Explorer nichts, obwohl der Text vorhanden ist.=>Datei öffnen mit Editor und danach suchen.

Oder redet Ihr über eine andere Suchfunktion?

Gruss Walter

Nachtrag:
Der obere Code findet die Textpassage sofort.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Wollte den Code optimieren, bin aber bei der Übergabe mehrerer Parameter an einen Thread hängen geblieben.

Der Code weist einige Lücken auf, z. B. werden keine UTF8 und Unicode-Dateien beachtet.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

AND51 hat geschrieben: Der Code weist einige Lücken auf, z. B. werden keine UTF8 und Unicode-Dateien beachtet.
Geht bei mir beides
Wenn ich die Datei mit dem Editor als UTF8 oder Unicode abspeichere und sie danach Suche (bzw deren Inhalt), wird sie auch gefunden.

@walter741
Ich denke mal das WIN nicht das gesamte System durchsucht (würde ja auch zu lange dauern) sondern nur bekannte Suchpunkte (Desktop etc.)
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

AND51 hat geschrieben:Wollte den Code optimieren, bin aber bei der Übergabe mehrerer Parameter an einen Thread hängen geblieben.
-> Struktur
(\/) (°,,,°) (\/)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Ich denke mal das WIN nicht das gesamte System durchsucht (würde ja auch zu lange dauern) sondern nur bekannte Suchpunkte (Desktop etc.)

hat damit nix zu tun.
Selbstverständlich benutzt man die Erweiterte Suche.

auch wenn man den richtigen Ordner angibt und den dateinamen mit *.pb,
der olle explorer durchsucht die nicht richtig.

womöglich sagt sich Windos "is keins von meinen textformaten, da is kein Text drin."
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten