Ich habe eine CSV-Datei der Form Dateiname;textinhalt Die Datei Dateiname ist binär und kann nicht durchsucht werden. Ich möchte in der Windows 10 - Suche Worte aus dem jeweiligen Textinhalt eingeben und im Ergebnis den Textinhalt sehen als auch einen Link auf die Datei, quasi meinen eigenen Index. Wie mache ich das?
Profis nehmen dafuer eine Datenbank. Aber doch nicht so etwas ao laecherlich unzuverlaessiges wie die Windowssuche. Binaere CSV-Dateien gibt es uebrigens nicht. Entweder CSV (soll wohl Comma Separated Value) oder Binaer.
Man kann <textinhalt> als Attribut direkt zur Datei Packen. Ungetestet, aber NTFS kann das und die Windows Suche hoffentlich. Ich würde nen richtigen Dateimanager nutzen. Der TotalCommander kann so etwas wenn man das passende Plugin dafür programmiert (spezielle individuelle Wünsche erfordern halt eine eigene Programmierung).
Lias Lindenau schrieb: > Dateiname;textinhalt > > Die Datei Dateiname ist binär und kann nicht durchsucht werden. Entweder handelt es sich um eine lesbare CSV-Datei oder eine Datei im Binärformat. Beides zusammen passt nicht. Bei Windowssystemen sollte das Programm, das Deine Datei geschrieben hat, dem Betriebssystem eine Funktion zum Durchsuchen bereitstellen. Stellt der Hersteller diese Funktion nicht bereit, bleibt nur noch Selberschreiben, wenn Du das Format der Datei kennst.
$$$ schrieb: > Binaere CSV-Dateien gibt es uebrigens nicht. > Entweder CSV (soll wohl Comma Separated Value) oder Binaer. Lias Lindenau schrieb: > Die Datei Dateiname ist binär und kann nicht durchsucht werden.
Peter M. schrieb: > Wie meinen? Er hat dich darauf hingewiesen das du die Aufgabenstellung nicht richtig verstanden hast. Es handelt sich um binäre Dateien UND eine Textdatei (CSV) mit Metainfos zu diesen binären Dateien. Die Textdatei soll von der Suche gelesen (und Durchsucht) werden. Und als Ergebnis sollen die Dateinamen der zutreffenden binären Dateien gelistet werden.
Peter M. schrieb: > Wie meinen? der TO hat verschiedene Binärdateien, sowie eine csv-Datei (nicht binär), in der diesen Binärdateien Textinhalte zugeordnet werden
Danke an alle Übersetzer! :) Ich glaube, dass die Microsoft-Suche dateiorientiert ist. Das bedeutet, der Frager sollte die dateispezifischen lesbaren Informationen in der Textdatei in die Binärdatei packen. Technisch könnte man das unter NTFS so realisieren, dass man diese Metainformationen in ein neues Attribut der Datei packt: https://de.wikipedia.org/wiki/Alternativer_Datenstrom Dann kann man nur noch hoffen, dass die Windowssuche auch anderen Attribute neben dem unbenannten Attribut "data" erfasst. Kopiert man solche Dateien jedoch auf einen Datenträger ohne NTFS, gehen diese Zusatzinformationen verloren!
Lias Lindenau schrieb: > Ich habe eine CSV-Datei der Form > > Dateiname;textinhalt > > Die Datei Dateiname ist binär und kann nicht durchsucht werden. > > Ich möchte in der Windows 10 - Suche Worte aus dem jeweiligen Textinhalt > eingeben und im Ergebnis den Textinhalt sehen als auch einen Link auf > die Datei, quasi meinen eigenen Index. > > Wie mache ich das? Search IFilter implementieren: https://docs.microsoft.com/en-us/windows/desktop/search/-search-ifilter-conceptual Das Beispiel von der Seite findet sich hier https://github.com/Microsoft/Windows-classic-samples/tree/master/Samples/Win7Samples/winui/WindowsSearch/IFilterSample
Kommt auf die Größe der Datei an. Am einfachsten nimmst die die Programmiersprache deiner Wahl und liest die Datei zeilenweise ein. Splittest jede Zeile nach dem ersten Komma / Semikolon und durchsuchtst nur den zweiten Teil. Bei Treffer gibst Du den ersten Teil zurück. Das geht z.B. mit wenigen Zeilen in C# (hier ein funktionsfähiges Beispiel ohne jede Fehlerbehandlung und ohne Prüfung der Parameter etc.):
1 | static void Main(string[] args) |
2 | { |
3 | using (TextReader tr = new StreamReader(@"C:\Tmp\Neues Textdokument.csv")) |
4 | { |
5 | string line; |
6 | while ((line = tr.ReadLine()) != null) |
7 | { |
8 | string[] elements = line.Split(new char[] { ';' }); |
9 | if (elements[1].Contains(args[0])) |
10 | { |
11 | Console.WriteLine(elements[0]); |
12 | } |
13 | } |
14 | } |
15 | } |
Der Suchtext wird im obigen Beispiel einfach als Kommandozeilen-Parameter übergeben. Man kann auch unter Windows die bash installieren und dann awk benutzen. Mache ich manchmal bei großen Dateien. Anonsten die CSV-Datei in eine Datenbank einlesen oder als Fremdtabelle einbinden, z.B. mit PostgreSQL FDW. Geht natürlich auch mit Excel...
Arc N. schrieb: > Search IFilter implementieren: > https://docs.microsoft.com/en-us/windows/desktop/search/-search-ifilter-conceptual > Das Beispiel von der Seite findet sich hier > https://github.com/Microsoft/Windows-classic-samples/tree/master/Samples/Win7Samples/winui/WindowsSearch/IFilterSample Ich habe es installiert, die Erweiterung filtersample existiert, es sollen Eigenschaften und Dateiinhalte indiziert werden. Die Datei ist in einem indizierten Ordner. Gebe ich dog im Cortana-Suchfeld ein, erscheint das Dokument nicht. Woran kann das liegen?
Lias Lindenau schrieb: > Arc N. schrieb: >> Search IFilter implementieren: >> > https://docs.microsoft.com/en-us/windows/desktop/search/-search-ifilter-conceptual >> Das Beispiel von der Seite findet sich hier >> > https://github.com/Microsoft/Windows-classic-samples/tree/master/Samples/Win7Samples/winui/WindowsSearch/IFilterSample > > Ich habe es installiert, die Erweiterung filtersample existiert, es > sollen Eigenschaften und Dateiinhalte indiziert werden. Die Datei ist in > einem indizierten Ordner. > Gebe ich dog im Cortana-Suchfeld ein, erscheint das Dokument nicht. > Woran kann das liegen? Mal die Tests drauf losgelassen? https://docs.microsoft.com/en-us/windows/desktop/search/-search-ifilter-testing-filters bzw. dann an die Tests anhängen und Debuggen. Anderer Fehler kann sein, dass in den Indizierungsoptionen (dort unter Erweitert und Dateitypen) schlicht nur eingestellt ist, dass bei der gewählten Dateiendung nur die Eigenschaften, aber nicht die Inhalte indiziert werden sollen. Edit: U.U. kanns auch sein, dass die Indizierung neu angestoßen werden muss (net stop wsearch, net start wsearch
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.