Festplatte durchsuchen
Übersicht

![]() |
TheProgrammerBetreff: Festplatte durchsuchen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
Ich hatte gestern für ne halbe h etwas Langeweile und das ist dabei rausgekommen: ^^ Code: [AUSKLAPPEN] Graphics 640,480,32,2 SetBuffer BackBuffer() Print "Searching... (Esc to interrupt)":Print Search("C:",".bb","Hello") file = WriteFile("found.log") For result.TResult = Each TREsult Print result\name$ WriteLine file,result\name$ Delete result Next CloseFile file Print:Print "Result saved in "+CurrentDir()+"found.log" Print "Press any key..." WaitKey() End() ; *************** ; ; Mainfunctions ; ; *************** Function Search(s_dir$,s_file$,word$="") dir_n% = GetParameterNumber(s_dir$) file_n% = GetParameterNumber(s_file$) word_n% = GetParameterNumber(word$) For I = 1 To dir_n% dir.TDir = New TDir dir\name$ = GetParameter(s_dir$,I) Next For I = 1 To file_n% file.TFile = New TFile file\name$ = GetParameter(s_file$,I) Next For I = 1 To word_n% w.TWord = New TWord w\name$ = GetParameter(word$,I) Next Repeat If KeyHit(1) Then FlushKeys() : Exit n% = 0 For dir.TDir = Each TDir n% = n% + 1 Next If Not(n%) Then empty = 1 Else dir = Last TDir SearchDir(dir\name$,word$) Delete dir EndIf Until empty=1 For file.TFile = Each TFile Delete file Next For dir.TDir = Each TDir Delete dir Next For w.TWord = Each TWord Delete w Next End Function ; **************** ; ; Helper Functions ; ; **************** Function GetParameterNumber%(txt$) Local n%=1 While Instr(txt$,",") n% = n% + 1 txt$ = Mid(txt$,Instr(txt$,",")+1,Len(txt$)) Wend Return n% End Function Function GetParameter$(txt$, index) Local n%=1 Local new_txt$="" Repeat If n% = index Then If Instr(txt$,",") Then new_txt$ = Mid(txt$,1,Instr(txt$,",")-1) Else new_txt$ = txt$ EndIf Exit Else txt$ = Mid(txt$,Instr(txt$,",")+1,Len(txt$)) EndIf n% = n% + 1 Forever new_txt$ = Trim(new_txt$) Return new_txt$ End Function Function SearchDir(dir$,word$) DebugLog dir$ s_dir = ReadDir(dir$) If s_dir Then Repeat file$ = NextFile(s_dir) If file$="" Then Exit If FileType(dir$+"\"+file$) = 2 Then If file$ <> "." And file$ <> ".." Then new_dir.TDir = New TDir new_dir\name$ = dir$+"\"+file$ Insert new_dir After First TDir EndIf Else If word$ <> "" Then o_file = ReadFile(dir$+"\"+file$) If o_file Then Repeat l$ = ReadLine(o_file) For w.TWord = Each TWord If Instr(Lower(l$),Lower(w\name$)) Then n% = 0 For result.TResult = Each TResult If Lower(result\name$) = Lower(dir$+"\"+file$) Then n% = 1 : Exit Next If n% = 0 Then result.TResult = New TResult result\name$ = dir$+"\"+file$ DebugLog "Found: "+result\name$ EndIf EndIf Next Until Eof(o_file) CloseFile o_file EndIf EndIf For all_files.TFile = Each TFile If Instr(Lower(file$),Lower(all_files\name$)) Then n% = 0 For result.TResult = Each TResult If Lower(result\name$) = Lower(dir$+"\"+file$) Then n% = 1 : Exit Next If n% = 0 Then result.TResult = New TResult result\name$ = dir$+"\"+file$ DebugLog "Found: "+result\name$ EndIf EndIf Next EndIf Forever CloseDir s_dir EndIf End Function ; *************** ; ; Types ; ; *************** Type TDir Field name$ End Type Type TFile Field name$ End Type Type TResult Field name$ End Type Type TWord Field name$ End Type ...eine einfache Suchroutine, mit der man Ordner auf seiner Festplatte nach Dateien durchsuchen kann. Man kann verschiedene Ordner angeben, die durchsucht werden sollen und verschiedene Wörter, die in den Dateien, die gesucht werden sollen, vorkommen müssen. (durch Kommas getrennt) Vlt. kann es ja jemand gebrauchen ^^ Feedback wünschenswert... Mfg TheProgrammer |
||
aktuelles Projekt: The last day of human being |
- Zuletzt bearbeitet von TheProgrammer am Sa, Jun 17, 2006 22:53, insgesamt einmal bearbeitet
$tankY |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nice, funktioniert ganz gut, dachte der kann auch noch die Dateien nach bestimmten Wörtern durchsuchen. | ||
![]() |
TheProgrammer |
![]() Antworten mit Zitat ![]() |
---|---|---|
So,
ich habe jetzt den optionalen Parameter hinzugefügt, in dem man angeben kann, nach welchen Wörtern der Inhalt der Dateien durchsucht werden soll. (Es können natürlich wieder mehrere Wörter mit Komma getrennt angegeben werden ^^) Dadurch läuft es jetzt aber viel langsamer. Mfg TheProgrammer |
||
aktuelles Projekt: The last day of human being |
![]() |
BlitzcoderNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schön. Ich hab auch mal sowas geschrieben, allerdings hab ichs mir zerknallt, als ich einbauen wollte, dass er zips durchsucht.
Bau doch eine Indizierung ein, sodass er t.B. immer in der Mittagspause alle Dateien indiziert(nicht den Inhalt, nur die Namen), und der Anwender dann immer ganz schnell Suchen kann. Vielleicht kannst du die Vista Suche überbieten ![]() MfG Blitzcoder PS: Deine Homepage ist down. Schade, ich wollte mir mal TlDoHb anschauen. |
||
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________ |°°°°°°°°°°°°°°||'""|""\__,_ |______________ ||__ |__|__ |) |(@) |(@)"""**|(@)(@)****|(@) |
![]() |
TheProgrammer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Aus dem Suchprogramm könnte man vlt. echt noch was Größeres machen, es war eigentlich nur ne ganz kleine Spielerei. Aber wenn ich Zeit habe, werde ich das noch ein bischen erweitern. ^^
Die Seite sollte bald wieder on sein. Es gab leider ein paar Angriffe auf den Server, bis er überhitzt war und sich abgestellt hat. Da waren an einem Tag aufeinmal 40 Gig traffic ![]() Mfg TheProgrammer |
||
aktuelles Projekt: The last day of human being |
$tankY |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wenn man sich die mühe macht, könnte man einen virenscanner machen, was sich aber nicht rentieren würde^^
EDIT: hab eben ein wenig das codearchiv durchkramt und das gefunden: https://www.blitzforum.de/foru...php?t=1903 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group