FindStr und Deutsche Umlaute

Diskutiere FindStr und Deutsche Umlaute im Windows 10 Software Forum im Bereich Windows 10 Foren; Ich benutze gern das Kommando FindStr, um damit nach bestimmten Begriffen in Textdateien zu suchen. Bei deutschen Umlauten und Sonderzeichen, wie...
  • FindStr und Deutsche Umlaute Beitrag #1
hkdd

hkdd

Erfahrener Benutzer
Threadstarter
Dabei seit
22.11.2014
Beiträge
1.407
Ort
Dresden
Version
windows 10 Pro 64-bit & Windows 11 Pro 64-bit
System
Ryzen 7 1800X, 16 GB 2400, GeForce GTX 1050 Ti
Ich benutze gern das Kommando FindStr, um damit nach bestimmten Begriffen in Textdateien zu suchen.
Bei deutschen Umlauten und Sonderzeichen, wie € ² ³ usw. gibt es Probleme.
Meine Testdatei ist diese:
Code:
Ein fröhliches Osterfest
in grünem Gras der Osterhas.
Eintritt: 5,00 €
Hier die Suche mit FindStr
FindStrUMLAUTE.jpg

Zunächst werden die Umlaute fehlerhaft angezeigt.
Wenn ich die Codepage auf 65001 einstelle, werden die Umlaute korrekt angezeigt.
Wenn ich eine Zeichenfolge mit einem Umlaut als Suchbegriff eingebe,
dann wird dieser nicht gefunden.
 
  • FindStr und Deutsche Umlaute Beitrag #2
Argor

Argor

Erfahrener Benutzer
Dabei seit
30.04.2019
Beiträge
1.444
Ort
Saarland
Version
Win 11 aktuell
System
Strix X570-F, R9 5900X, 32 GB, TUF RTX 4080 OC, Aorus FV43U
Hallo Hartmut,

die Eingabeaufforderung arbeitet für gewöhnlich mit der Codepage 850. Text in dieser CP speichern und das Ganze funktioniert.
 
  • FindStr und Deutsche Umlaute Beitrag #3
hkdd

hkdd

Erfahrener Benutzer
Threadstarter
Dabei seit
22.11.2014
Beiträge
1.407
Ort
Dresden
Version
windows 10 Pro 64-bit & Windows 11 Pro 64-bit
System
Ryzen 7 1800X, 16 GB 2400, GeForce GTX 1050 Ti
Hallo Argor,
ich verstehe Deine Antwort nicht so ganz...
1679904855244.png

Die cp 850 zeigt keine deutschen Umlaute.
Ich will ja in Dateien suchen, wo die Umlaute als UTF-8 Zeichen gespeicheret sind, und das klappt eigentlich mit der CP 65001.

1679905068624.png


ein "ü" = Hex: C3 BC
ein "€" = Hex: E2 82 AC

Ich habe mir einen kleinen BAT gemacht, damit klappt es auch mit Umlauten

1679905914594.png


Und so sieht er aus, der FindeStr.bat
Code:
CHCP 65001
ECHO %1>Suchbegriff.tmp
FindStr /G:Suchbegriff.tmp %2
DEL Suchbegriff.tmp
PAUSE
 

Anhänge

  • 1679905027434.png
    1679905027434.png
    9,2 KB · Aufrufe: 7
Zuletzt bearbeitet:
  • FindStr und Deutsche Umlaute Beitrag #4
Argor

Argor

Erfahrener Benutzer
Dabei seit
30.04.2019
Beiträge
1.444
Ort
Saarland
Version
Win 11 aktuell
System
Strix X570-F, R9 5900X, 32 GB, TUF RTX 4080 OC, Aorus FV43U
Man nehme einen Editor wie z.B. notepad++ und erstelle eine Datei in der CP 850. Anschließend abspeichern.


Screenshot 2023-03-27 103042.png


Problem ist: Öffnet man die im "normalen" Modus, dann bekommst man den aktuell angewandten Zeichensatz angezeigt.

Screenshot 2023-03-27 103319.png


Einen Tod muss man sterben beim Jonglieren mit Codepages ;-)
Beitrag automatisch zusammengeführt:

Nachtrag:

Man könnte auf eigenes Risiko natürlich rumpfuschen und den Wert für die Codepage, den der Win-Befehlsinterpreter nutzt ändern...

"OEMCP" unter Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage

Aber nur Gott allein weiß, was Du damit evtl. an anderen Einstellungen im System verbügelst
 
Zuletzt bearbeitet:
  • FindStr und Deutsche Umlaute Beitrag #5
hkdd

hkdd

Erfahrener Benutzer
Threadstarter
Dabei seit
22.11.2014
Beiträge
1.407
Ort
Dresden
Version
windows 10 Pro 64-bit & Windows 11 Pro 64-bit
System
Ryzen 7 1800X, 16 GB 2400, GeForce GTX 1050 Ti
Das Problem ist folgendes.
Ich habe sehr viele Multi-Media-Dateien, Videos, Fotos und Musik.
Für die Festplatten, auf denen diese Dateien gespeichert sind, mache ich ein Gesamt-DIR mit CP65001.
Viele Dateinamen enthalten deutsche Umlaute usw.
Durch die CP 65001 stehen diese Namen korrekt mit deutschen Umlauten in dieser großen Datei (knapp 600 MB).
Durch einfaches Suchen finde ich also sehr schnell den Speicherort einer Datei, oder ich suche mir bestimmte Dateien heraus.
Hier ein kleiner Auszug aus der Datei
Code:
 Verzeichnis von N:\AudioHK\#ZwSp\#erl\Das 50er Jahre Schlager Karussel (2)  CD1\

21.03.2022  10:50        23.588.436 N:\AudioHK\#ZwSp\#erl\Das 50er Jahre Schlager Karussel (2)  CD1\Alle Mädchen wollen küssen Leo Leandros.wav
21.03.2022  11:02        24.802.160 N:\AudioHK\#ZwSp\#erl\Das 50er Jahre Schlager Karussel (2)  CD1\Ich möcht mit Dir Träumen Peter Kraus.wav
21.03.2022  11:02        27.096.332 N:\AudioHK\#ZwSp\#erl\Das 50er Jahre Schlager Karussel (2)  CD1\Ich zähle täglich meine Sorgen Peter Alexander.wav
21.03.2022  10:56        25.196.920 N:\AudioHK\#ZwSp\#erl\Das 50er Jahre Schlager Karussel (2)  CD1\Statt weiß trag rot Paul Kuhn.wav

Ich werde das mit CP 850 probieren, ob da auch die Umlaute korrekt angezeigt werden.
Beitrag automatisch zusammengeführt:

Ich habe mal CP850(=ANSI) und CP65001(=UTF8) probiert, jeweils ein DIR-Kommando für die Datei mit dem merkwürdigen Namen äöüß@€²³.xyz.
Die Ausgabe wurde jedesmal in eine Textdatei umgeleitet.
So werden die Dateien vom Editor und Notepad++ angezeigt:

Das ist jeweils die Ausgabe vom DIR bei CP 65001 (UTF-8).
Beide Editoren erkennen die Datei als UTF8 ud zeigen alles korrekt an.

1679915901431.png



FindStr findet die Zeichenfolge "äö" nur bei eingestellte Codepage 850 im 850er DIR.

Beide Editoren erkennen die mit CP850 erstellte DIR-Datei als ANSI und zeigen
den Dateinamen nicht richtig an.
Auch bei dem Wort "Datenträger" in der ersten Zeile wird das "ä" nicht dargestellt.
FindStr findet "äö" im 65001er DIR nicht, egal, welche CP eingestellt ist.

1679916214590.png


Ich werde also bei der Codepage 65001 bleiben.
Im System stelle ich dazu nirgendwo etwas ein.
Ich mache nur vor dem DIR-Kommando die Einstellung: CHCP 65001.
Das ganz machen natürlich fertge BAT-Dateien, die nur gestartet werden müssen,
wenn wieder neue Dateien hinzu gekommen sind .

Da ich sehr viel mit Visual Studio 2022 arbeite und dort UTF8 als Standarf benutzt wird,
funktionieren Auswertungen von derartigen DIR-Dateien auch nur mit CP 65001.

Wenn ich die 850er Datei mit Notepad++ und Codierung OEM850 öffne, sieht es korrekt aus.

1679917177122.png


Beim Windows-eigenen Editor kann man dazu nichts einstellen.
 
Zuletzt bearbeitet:
  • FindStr und Deutsche Umlaute Beitrag #6
Argor

Argor

Erfahrener Benutzer
Dabei seit
30.04.2019
Beiträge
1.444
Ort
Saarland
Version
Win 11 aktuell
System
Strix X570-F, R9 5900X, 32 GB, TUF RTX 4080 OC, Aorus FV43U
Und per Powershell ?

Code:
Get-ChildItem *.txt -EA SilentlyContinue | Select-String -Pattern ‘Gras'
 
  • FindStr und Deutsche Umlaute Beitrag #7
hkdd

hkdd

Erfahrener Benutzer
Threadstarter
Dabei seit
22.11.2014
Beiträge
1.407
Ort
Dresden
Version
windows 10 Pro 64-bit & Windows 11 Pro 64-bit
System
Ryzen 7 1800X, 16 GB 2400, GeForce GTX 1050 Ti
1679925308936.png


Man kann damit nach 'grün' suchen.
 
  • FindStr und Deutsche Umlaute Beitrag #8
Argor

Argor

Erfahrener Benutzer
Dabei seit
30.04.2019
Beiträge
1.444
Ort
Saarland
Version
Win 11 aktuell
System
Strix X570-F, R9 5900X, 32 GB, TUF RTX 4080 OC, Aorus FV43U
Der sucht halt nachjedem String ggf. auch öfter.
Okay, lass mich nochmal drüber nachdenken, wie man das am besten regeln kann..
Beitrag automatisch zusammengeführt:

Okay, in Win 11 gibts da ne beta Einstellung, keine Ahnung, ob Win 10 das auch kann. Musst Du mal schauen.

Win+R -> intl.cpl

Screenshot 2023-03-27 163421.png


Dann sollte alles gehen :-)

Screenshot 2023-03-27 164207.png
 
Zuletzt bearbeitet:
  • FindStr und Deutsche Umlaute Beitrag #9
hkdd

hkdd

Erfahrener Benutzer
Threadstarter
Dabei seit
22.11.2014
Beiträge
1.407
Ort
Dresden
Version
windows 10 Pro 64-bit & Windows 11 Pro 64-bit
System
Ryzen 7 1800X, 16 GB 2400, GeForce GTX 1050 Ti
Hallo Argor,
ich bin ja eine "alter" Programmierer, und wenn soi einem etwas nicht passt, dann versucht er es selbst besser zu machen.
Ich habe bereits ein Fenster-Version gebastelt
1679981078133.png

Diese angezeigten Text-Dateien haben unterschiedliche Encodierungen.

In meinem Programm habe ich versucht, das Encoding einer Datei selbst zu ermitteln.
  • wenn es UTF8-deutsche Umlaute gibt => Enconding.UTF8
  • gibt es keine UTF8-Umlaute => Encoding.GetEncoding(850)
  • für alles andere => Encoding.Default
Dazu lese ich die ersten max. 6000 Bytes ein und untzersuche sie.

So machen es viele "gute" Programme, z.B. der Editor meines EF-Commanders.
Der erkennt auch automatisch die Encodierung.
Notepad++ muss man es mitteilen und der normale Editor erkennt es auch nicht.

Unicode/UTF-8-Zeichentabelle

Ich werde jetzt noch eine Kommandozeilenversion des FindStr Programmes machen,
und dieses wird die Encodierung auch erkennen, egal, ob Windows 7, 8, 10 oder 11.
 
  • FindStr und Deutsche Umlaute Beitrag #10
Argor

Argor

Erfahrener Benutzer
Dabei seit
30.04.2019
Beiträge
1.444
Ort
Saarland
Version
Win 11 aktuell
System
Strix X570-F, R9 5900X, 32 GB, TUF RTX 4080 OC, Aorus FV43U
Ja, selbst machen ist immer der beste Ansatz. 👍

Aber als "alter" Programmierer weißt Du auch, dass man nie zuuu viel Aufwand betreiben sollte, schon gar nicht um das Rad neu zu erfinden. :D

Hast Du mal geschaut, ob man das bei Win10 auch einstellen kann, ich hab nämlich grad nur 11er Büchsen hier zum testen...
 
  • FindStr und Deutsche Umlaute Beitrag #11
hkdd

hkdd

Erfahrener Benutzer
Threadstarter
Dabei seit
22.11.2014
Beiträge
1.407
Ort
Dresden
Version
windows 10 Pro 64-bit & Windows 11 Pro 64-bit
System
Ryzen 7 1800X, 16 GB 2400, GeForce GTX 1050 Ti
1679983017969.png

Ja, das gibt es bei WIn10 auch. Win11 habe ich auch auf dem PC, nutze es aber nur sehr selten, da dort einiges nicht funtioniert.


1679983184778.png


Es hat sich dabei nichts geändert.

Das Programmieren in meinem Alter (Jahrgang 43) macht aber immer wieder Spass, vor allem, wenn man nach Wegen und Lösungen suchen muss, weil die nicht einfach auf der Strasse liegen.
Beitrag automatisch zusammengeführt:

1679983637854.png


Nach einem Neustart => funktioniert das in WIndows 10.
Die Dateien haben z.T. UTF8 od CP850.
Danke für den Hinweis.
Beitrag automatisch zusammengeführt:

Und so sieht es nach dem Setzen der UTF8-Hakens in Windows 11 aus
1679984126512.png


Da kann ich mir die Kommandozeilenversion wohl sparen.
Nochmals DANKE für Deine Mühe, das herauszufinden.
Visual Studio von Microsoft benutze ich seit vielen Jahren.
Die Version 2010 (13 Jahre alt) arbeitet komplett mit UTF8.
Warum muss man in dem neuen Win11 erst einen gut versteckten UTF8-Haken setzen,
damit UTF8-Dateien unterstützt werden.
Die "normalen" Windows-User, egal ob Win10 oder 11, finden diesen Halken niemals.
Ich hoffe, dass andere, die diesen Beitrag lesen, Deinen hilfreichen Hinweis auch nutzen können.

Auch der DIR-Befehl zeigt jetzt UTF8-Zeichen an, ohne dass man zuvor CHCP 65001 eingeben muss.

1679984595768.png


Und das klappt auch mit PowerShell

1679984775840.png

Beitrag automatisch zusammengeführt:

In meiner virtuelle Win8.1 Maschine gibt es bei

Win+R -> intl.cpl

diesen UTF8-Haken noch nicht. Deshalb klappt dort auch FindStr nicht

1679985107848.png

Beitrag automatisch zusammengeführt:

Wenn ich aber mein selbstgeschriebenes Programm in dem virtuellen Windows 8.1 benutze, dann klappt die Suche
Genau so im virtuellen Windows 7.
1679985583324.png


Es liegt also nicht am Windows-System, sondern daran, wie das jeweilige Programm arbeitet.
Auch der EF-Commander hat unter Windows 8.1 keine Code-Probleme, er erkennt ANSI, UTF8, ASCII usw. automatisch,
ohne dass irgenwelche Zusatzeinstellungen erforderlich sind.
Beitrag automatisch zusammengeführt:

Hallo Argor,
ich habe noch etwas herumprobiert und bin auf folgende durchaus übliche Codierungen gestossen, die von einigen Programmen gefragt oder ungefragt verwendet werden.
CodePage 850 (wie von Dir als Standard empfohlen)
UTF8 (mit und ohne BOM) - BOM = Hex ED BB BF am Dateianfang
UTF16/ Unicode(mit und ohne BOM Hex FF EE am Dateianfang

Im Anhang befinden sich kleine Testdateien in diesen Codierungen.
Das Windows-eigene FindStr-Programm findet nach Setzen des Hakens nur Zeilen in UTF8-Dateien, nicht in UTF16 und nicht in Codepage850.
Mein eigenes FindStrHk Programm erkennt automatisch die Codierung der jeweiligen Datei und verarbeitet alle Dateien entsprechend korrekt.
FindStrHk.jpg
FindStr.jpg
 

Anhänge

  • 3CodeTest.zip
    1 KB · Aufrufe: 8
Zuletzt bearbeitet:
Thema:

FindStr und Deutsche Umlaute

FindStr und Deutsche Umlaute - Ähnliche Themen

Google: Such-Ergebnisse auf deutsch oder eine andere Sprache begrenzen - so wird es gemacht: Wenn Google zu bestimmten Suchanfragen hunderttausende Treffer ausgibt, ist das oftmals eher kontraproduktiv. Vor allem dann, wenn...
Oben