Schlagwortsuche in Textdateien

  • Im Anhang mal eine angepasste Variante. Ich fände es super, wenn du es mit dieser noch einmal probierst.

    Diese Version ist wieder richtig klasse geworden. Vielen Dank dafür !

    Ich habe jetzt mal zum Test nur einen kleineren Teil meiner Dateien einlesen lassen. Das sind unter 500 Dateien. Enthalten sind nur "doc, docx, xls, xlsx und pdf" Dateien. MS-Office ist auf dem Testrechner nicht installiert. nur Libreoffice. Das sollte ja aber keine Rolle spielen.

    Hier ein Video von dem Versuch unter 500 Dateien mit Konsolenausgabe:
    http://www.eibenkunst.de/Autoiter/Aufna…8_54_20_103.mp4

    Die Fehlerausgabe der Console zeigt auf die entsprechende Dateien wie z. B.:
    Skriptzeile: 1399 D:\xxx\xxx\xxx\xxx\Protokoll xxx 19.12.12.doc - _Word_DocOpen-Fehler: 1

    Allerdings wird dieselbe Datei unterhalb des Fehlers nochmals in der Consolenausgabe ohne den Fehler "_Word_DocOpen-Fehler: 1" ausgegeben.


    Bei einem Test mit wieder mehr als 8.000 Dateien läuft das Skript nun sauber durch. Gefällt mir klasse. Dauer beim Erstdurchlauf mit allen möglichen Dateitypen ca. 13 Minuten. Das sollte im Regelfall aber eher die Ausnahme darstellen meine ich. Siehe: http://www.eibenkunst.de/Autoiter/Aufna…9_15_17_588.mp4

    Die Suchresultate sind sehr gut. Eine andere von mir eingesetzte Software fand auch nicht mehr als Deine, dafür war Deine schneller. Vor allem im Hinblick auf die Datenbanksuche gibt es nichts besseres, zumindest nicht was ich jemals gesehen hätte. Von meiner seite her läuft Dein Skript jetzt sehr gut durch und bietet fast alles was ich für einen sehr guten Suchlauf benötige.

    Ich danke Dir sehr für die Überarbeitungen.

  • Hi @bazii,
    vielen Dank, dass du dir nochmal so viel Zeit genommen hast und sogar wieder Videos gemacht hast. Es ist sehr schön, auch zu sehen, um was es geht. :thumbup:

    Also scheinbar ist alles gut. Mir ist nicht klar, warum das Schreiben so lange dauert (bei den 489 Dateien waren es ja über 0,2 Sekunden je Datei. - So schnell durchsucht das Programm später die ganze Tabelle :D ). Aber das ist wohl einfach so. Hauptsache das Programm bleibt bedienbar und funktioniert.

    Witzig finde ich aber, dass es bei dir am Ende ja gar nicht länger dauert als zuvor. Bei mir ist ist die Suchdauer bei 5841 Dateien um etwa 10-15 Sekunden gestiegen (dennoch nur max 66 Sekunden mit SSD).

    MS-Office ist auf dem Testrechner nicht installiert. nur Libreoffice. Das sollte ja aber keine Rolle spielen.

    Das sollte keine Rolle spielen. In deinen Tests habe ich zwar keine Suchtreffer aus Office-Dateien gesehen, aber das funktioniert, oder?
    Da sollte das Programm eigentlich auch eine seiner Stärken ausspielen, weil es ja eine eigene GUI für Textdokumente und Excel/CSV-Dateien gibt (wenn auch ohne Übernahme der Formatierung..). Mit einem Doppelklick auf den Treffer solltest du den Inhalt angezeigt bekommen (Rechtsklick würde das Standardprogramm öffnen).

    Im Video konnte man aber auch schön sehen, dass immer wieder probiert wird, dass Dokument mit Word zu öffnen. Vielleicht wäre es besser, den Fehlversuch für die Suche zu speichern und gleich mit den anderen Methoden zu arbeiten.

    Vor allem im Hinblick auf die Datenbanksuche gibt es nichts besseres, zumindest nicht was ich jemals gesehen hätte. Von meiner seite her läuft Dein Skript jetzt sehr gut durch und bietet fast alles was ich für einen sehr guten Suchlauf benötige.

    Windows (10/8.1) selbst ist mittlerweile super. Wenn du das Startmenü öffnest und einfach deinen Suchbegriff schreibst, öffnet sich eine Ergebnisanzeige. Da musst du noch auf das Symbol für Dokumente klicken und findest die Ergebnisse der Volltextsuche mit Vorschau wenn der Mauszeiger über einem Eintrag ist. Allerdings würde es dir keine Vollansicht spendieren, wenn kein verknüpftes Programm installiert ist.

    Mein Programm ist vor allem dann sinnvoll, wenn aus Performance-Erwägungen der Indexdienst abgeschaltet ist, oder die Dateien auf einem Netzlaufwerk liegen oder eben kein geeignetes Anzeigeprogramm verfügbar ist.


    Ich werde das Programm nochmal so umstricken, dass die Option "alle 500 Dateien in DB schreiben" wieder funktioniert, aber das direkte Schreiben wird Standard. Wenn du noch eine Idee hast, immer her damit.

    Nochmal vielen Dank. Bis dahin :thumbup:

    Grüße autoiter

  • Mir ist nicht klar, warum das Schreiben so lange dauert (bei den 489 Dateien waren es ja über 0,2 Sekunden je Datei. - So schnell durchsucht das Programm später die ganze Tabelle ). Aber das ist wohl einfach so.

    Mir leutet es ein, warum die Erstsuche (Indexizierung) seine Zeit benötigt. Jede Datei einzeln öffnen, suchen, finden, schließen. Das benötigt seine Zeit. Wie gesagt, mir ist nicht schnelleres als Deine Softw. bekannt.

    Bei mir ist ist die Suchdauer bei 5841 Dateien um etwa 10-15 Sekunden gestiegen (dennoch nur max 66 Sekunden mit SSD).

    Ich arbeite auch mit einer SSD :). Beim zweiten Durchlauf komme ich auch auf Deine Werte. Nur beim ersten Durchlauf nicht. Ich vergleiche den ersten Durchlauf mit einem Indexizieren der Dateien auf Inhalt. Dann geht die Post aber so was von ab, das ist fantastisch. Auch andere Suchbegriffe sind schneller gefunden wie man schauen kann. Schlecht für Pausenliebhaber die ab und an mal wegen der Technik eine rauchen gehen konnten :)

    In deinen Tests habe ich zwar keine Suchtreffer aus Office-Dateien gesehen, aber das funktioniert, oder?

    Das funktioniert aber so was von perfekt. Rechtklick und Libre öffnet die Datei. Doppelklick öffnet das Textfenster in nullkommanix.

    Mein Programm ist vor allem dann sinnvoll, wenn aus Performance-Erwägungen der Indexdienst abgeschaltet ist, oder die Dateien auf einem Netzlaufwerk liegen oder eben kein geeignetes Anzeigeprogramm verfügbar ist.

    Oh ja. So ist es. Vor allem bei älterer Hardware habe ich grundsätzlich den Indexdienst deaktiv. Da leistet Deine Textsuche perfekte Arbeit.

    Wenn du noch eine Idee hast, immer her damit.

    OHA. Das ist eine gefährliche Sache bei mir. Ich muss Dich ausdrücklich davor warnen mich mit Ideeen aufzufordern. Davon habe ich mehr genug. Daraus könnte eine leicht aufwendige Arbeit werden.

    Einiges habe ich aber schon zusammengestrickt. Nur wie, ist eine andere Sache ;( . Und wie Du es dann umsetzen könntest auch. Ich schaffe das alleine nicht.

    Mein Traum ist ein Text-Regenerator. Text suchen, Text finden, Text ersetzen. Incl. Office-Dateien und incl. gepackter Dateien. :thumbup:
    Hier mein Skript, welches nicht optimal läuft da 7z., zip nicht funktioniert.
    Es könnte entsprechend auf Deine Textsuche erweitert werden könnte oder anders herum. Doch ich packe das alleine einfach nicht.
    Ich habe mich auch nicht getraut, im Forum hier nach entsprechender Unterstütz zu fragen weil ich oftmals die Tips nicht umsetzen kann die ich bekomme.
    Oft brauche ich Tage um 2 zeilen Code funktional zu bekommen. Mir fehlen die Hintergründe eines Studiums oder die Gehirnwindungen. Auch egal.
    Hier der Code:


    Also wenn Du Dir ein wenig Zeit für die Idee nehemn kannst, wäre das klasse :) Quasi ein Gemeinschaftsprojekt.

    Ich bin Gärtnermeister und äußerst kreativ im "planen" aber wesentlich zu naiv (oder zu doof), die wichtigsten Dinge im Code hinzubekommen. Bernd670, Oscar, Autobert, UEZ und nicht zuletzt MakeGrafik haben sich an mir die Zähne bereits ausgebissen, weil ich immer gleich die Hand abreisen will, wenn mir jemand den Finger hinstreckt. :/

    Und diese Idee wäre nicht die einzigste. Hätte da noch eine .... ;( zündende ....

  • Das Programm ist aktualisiert und im ersten Beitrag angehängt.

    Soo @bazii, gleich ein Attentat oder wie? :D
    Gerne will ich helfen. Allerdings übersteigen die Anforderungen zum Teil sicher auch das was ich hinbekomme. Text ersetzen kann ich in Office-Dateien nicht ohne installiertes Office. Das übersteigt einfach meine Kenntnisse/Fähigkeiten. Die Forensoftware nennt mich zwar Profi, aber das liegt nur an der Anzahl der Beiträge. Interessiert sie nicht, dass die meisten davon lauten: Tolles Skript, BugFix. Danke für das tolle Skript UEZ, Wow, super Arbeit Oscar. :D
    Hier wäre vielleicht grepWin etwas für dich: http://stefanstools.sourceforge.net/grepWin.html
    Das ist ein ganz tolles Programm, bei dem mir am Ende doch ein paar Dinge (für genau meine Zwecke) gefehlt haben, so dass ich die Textsuche geschrieben habe. Aber wenn du da Binär-Dateien anhakst findet Grewpwin alles, bietet Suchen/Ersetzen und Regex Suchpattern.

    Ansonsten kann ich dir sicher die Suche in dein Programm einbauen. Aber ohne Datenbank in dem Fall, oder?

    Grüße autoiter

  • Hier wäre vielleicht grepWin etwas für dich: stefanstools.sourceforge.net/grepWin.html

    Das kenne ich bereits. Kein Programm aber das ich kenne bietet mir das was ich alles vereinen möchte.

    Text ersetzen kann ich in Office-Dateien nicht ohne installiertes Office.

    Das habe ich nie für ein Problem gehalten, da ja auch mit einem Open- oder Libreoffice die Dateien geöffnet und bearbeitet werden können. Kann mich aber auch täuschen.

    Die Forensoftware nennt mich zwar Profi, aber

    und mich Fortgeschrittener .... Ich habe schon ein paar nützliche Dinge gecodet aber brauchte immer Hilfe weil ich irgendwann nicht mehr weiter wusste.


    Ansonsten kann ich dir sicher die Suche in dein Programm einbauen. Aber ohne Datenbank in dem Fall, oder?

    Das ist es ja, ich kann das nicht richtig beurteilen.
    Mein Programm sucht und findet Text und kann ihn auch ersetzen.

    Dein Programm sucht und findet Text und kann die Dateien auf verschiedene Weise anzeigen.

    Vereint wäre das klasse. Ob eine Datenbank dazu notwendig sein muss kann ich nicht beurteilen. Fehler ist es aber sicher nicht oder was meinst Du?

    In mein Skript sollte noch die Funktionalität von Zip, 7z. entpacken, Text suchen, finden, ersetzen und die zuvor entpackten dateien wieder packen integrert werden. Das habe ich nicht geschafft.
    Und Textersetzen von Officedateien sollte halt auch möglich sein. Zur Not auch nur dann, wenn Office installiert ist.

  • Huiuiui, also das volle Programm :D
    Sorry, da macht es nach aktuellem Stand keinen Sinn, ich portiere alles in dein Programm, denn selbst deine GUI muss ja noch umgebaut werden.
    Prinzipiell hätte ich auch schon einen Vorschlag für einen Ersatz deiner Checkboxen für Dateitypen. Wie man das nun zusammenbekommt, Oberfläche, mit/ohne DB, Archive, Office usw. können wir gerne per PN bequatschen. Das ufert hier sonst zu sehr aus.

    Grüße autoiter

  • Hallo Leute,
    ich musste das Programm nochmal aktualisieren. Falls es jemand nutzt, sorry. Im letzten Update war ein böser Bug. Statt dem Bearbeitet-Zeitpunkt habe ich den Erstellt-Zeitpunkt ausgewertet und immer mit dem Wert in der Datenbank verglichen. Änderungen in Dateien wurden dadurch überhaupt nicht bemerkt..

    Grüße autoiter

  • Danke für die Info. Ich hatte das Programm bereits mehrfach sehr erfolgreich im Einsatz, hatte den Fehler aber nicht entdeckt, da ich die Datenbank für meine Suchen stets entleert habe, da die verschiedenen Suchordner immer auf einer anderen Festplattenpartition waren. Hier auch gleich die Frage, wie sich das mit solch verschiedenen Suchorten verhält. Wie reagiert da die Datenbank, wenn ich diese nicht entleere? Was ist sinnvoller in diesem Fall meine ich. Besser DB leeren oder nicht, wenn die Suche auf verschiedenen Partitionen stattfindet?

  • Hallo @bazii :)

    Ich hatte das Programm bereits mehrfach sehr erfolgreich im Einsatz, hatte den Fehler aber nicht entdeckt, da ich die Datenbank für meine Suchen stets entleert habe, da die verschiedenen Suchordner immer auf einer anderen Festplattenpartition waren.

    Also bei so einer Nutzung sehe ich keinen guten Grund auf dieses Programm zurückzugreifen ;) Da nimm zum Beispiel GrepWin, womit das erste Einlesen deutlich schneller ist. Die Textsuche spielt ja erst bei wiederholten Suchen ihre Vorteile aus.

    Aber es ist so:
    Alle neuen Dateien werden in die DB gelesen. Wenn du das Verzeichnis wechselst werden dort auch alle Dateien (sind dem Programm ja neu) eingelesen. Also bis dahin alles gut.

    Wenn du den Haken "Datenbankbereinigung" setzt, wird bei jeder Suche auch geprüft, ob die Datei im aktuellen Ordnerzweig vorhanden ist. Wenn nicht wird sie aus der Datenbank entfernt.

    Das heißt, du kannst ruhig ohne Löschen der DB in Verzeichnissen suchen. Wenn dir die Suchen träge erscheinen kannst du mit "Datenbankbereinigung" alle obsoleten Daten löschen.

    - Das ist aber auch eine große Schwäche des Programms. Hier hast du bisher keine Möglichkeit nur bestimmte Daten zu entfernen. Alles was nicht zur aktuellen Suche passt, fliegt raus. Das kann ich bei Gelegenheit verbessern. Aber gerade erledige ich eine umfangreiche, unbezahlte Auftragsarbeit, @bazii. :P

    Grüße autoiter

  • Das heißt, du kannst ruhig ohne Löschen der DB in Verzeichnissen suchen. Wenn dir die Suchen träge erscheinen kannst du mit "Datenbankbereinigung" alle obsoleten Daten löschen.

    Na, das ist doch echt genial. Dann nutze ich doch das richtige Programm :thumbup: und kann es jetzt, nachdem Du den Fehler gefixt hat auf allen Partitionen nutzen und somit in der Datenbanksuche und gleichsam mit genauer Trefferquote enorm viel Zeit sparen.

    Das ist aber auch eine große Schwäche des Programms. Hier hast du bisher keine Möglichkeit nur bestimmte Daten zu entfernen. Alles was nicht zur aktuellen Suche passt, fliegt raus.

    Man muss ja nicht unbedingt Daten daraus entfernen. Solage die Datenbank nicht spürbar träger wird, wenn sie immer voller wird finde ich das voll ok so wie es ist.


    Statt dem Bearbeitet-Zeitpunkt habe ich den Erstellt-Zeitpunkt ausgewertet und immer mit dem Wert in der Datenbank verglichen.

    Eben habe ich von 7268 indexierten Dateien bei denen ein Suchwort vorkam, in einer der gefundenen Dateien das Suchwort geändert.
    Resultat (ohne nur Datenbanksuche) war in 24 Sekunden perfekt. Die Datei wurde nicht mehr gefunden. :klatschen::thumbup: . Klasse Arbeit !

    gerade erledige ich eine ...

    tut mir echt leid ;( .... ich konnte nicht im entferntesten ahnen was ich Dir damit antue. ||

  • Hallo Leute,
    Das Programm hat noch mal ein Update erhalten.
    Neben einigen Fehlerkorrekturen und Aufräumarbeiten wurden einige Arrays, die ich als Filter verwandte durch Dictionaries ersetzt. Gerade bei vielen Dateien macht sich ein enormer Geschwindigkeitszuwachs bemerkbar, wenn _ArraySearch durch $oObj.Exists("Element") ersetzt wird (etwa beim Dateitypfilter auf jede Datei oder deren letzter Änderungszeitpunkt..).
    Ich habe es wieder kommentiert, damit man das hoffentlich etwas nachvollziehen kann. Die betroffenen Funktionen finden sich im ersten Beitrag und zum Vergleich liegt die letzte Version mit Arrays auch im Verzeichnis.
    PS: Statt mit den eingefügten Beispieldateien, kann man das entweder mit einem eigenen Verzeichnis mit vielen Office- und Textdateien testen oder etwa das Autoit Installationsverzeichnis mit den ganzen au3-Dateien nehmen.

    Grüße autoiter