45753
Goto Top

sort Sortierungsfehler mit a-zÄÖÜßäöü bzw. öÄÜßüaÖb-näo-z

Hallo zusammen,

"sort" hat Probleme mit den Buchstaben ä,ö,ü,ß.

mit Gebietsschema "C" sortiert er

a-zÄÖÜßäöü

und ohne Gebietsschema "C" sortiert er

öÄÜßüaÖb-näo-z

Im Script hab ich nun mit Gebietsschema "C" ein alphabetfix eingebaut in dem z.b. alle ä nach aeþþþ umgewandelt werden, dann der Text mit sort sortiert wird und dann die Buchstaben wieder zurückgewandelt werden.
Nur bringt dies das Problem mit sich, dass alle äöü - egal ob gross ober klein je nach Angabe in klein äöü ODER gross ÄÖÜ zurückgewandelt werden. Der Befehl

set "fixumlaute=%fixumlaute:ä=aeþþþ%" achtet nicht auf gross-/kleinschreibung. Ä's ob gross oder klein werden nach aeþþþ umgewandelt.

Gibt es dafür eine Lösung ?

Gruesse, wobleibtdiezeit

Content-ID: 65875

Url: https://administrator.de/contentid/65875

Ausgedruckt am: 23.11.2024 um 02:11 Uhr

Seltermann
Seltermann 10.08.2007 um 17:02:28 Uhr
Goto Top
wie genau sieht denn der Kram aus den du sortieren lassen willst?
Stehen die Wörter untereinander in einer Textdatei?
Oder willst du Dateien sortieren lassen?
45753
45753 10.08.2007 um 19:22:39 Uhr
Goto Top
Hallo Setlermann,

Ich hab nicht ganz raus auf was du hinaus willst. Deshalb erklaere ich Dir einfach mal was loss ist...

In der Textdatei befinden sich Auflistungen von Dateien und/oder Ordnern aus einem Ordner +/- deren Unterordnern. Dies lass ich mir in eine Textdatei ausgeben.

Ich beschraenke es mal auf den wichtigsten Ausgabenverlauf:

1. die Ausgabe mit Unterordnern und ohne sort nach Dir Parametern /ogn /s
zuerst alphabetisch die Ornder und dann alphabetisch die Dateien:

"Ordner 1\"
"Ordner 2\"
"Neue Datei.txt"
"Überarbeitete Datei.txt"
"Ordner 1\Änderung in Datei.txt"
"Ordner 2\Überarbeitete Datei.txt"

2. Die Ausgabe aus 1. aber ohne die Pfadeangaben der Unterordner und immer noch ohne sort:

"Ordner 1\"
"Ordner 2\"
"Neue Datei.txt"
"Überarbeitete Datei.txt"
"Änderung in Datei.txt"
"Überarbeitete Datei.txt"

3. Die Ausgabe aus 2. und diesmal mit sort und dem Problem welches ich geschildert habe.
Um es komplett zu machen wieder zuerst alphabetisch die Ornder und dann alphabetisch die Dateien. Das hab ich gelost indem ich die Ausgabe der Ordner und die Ausgabe der Dateien in zwei verschiedene Textdateien umgelenkt habe. Diese werden mit sort einzeln sortiert und dann wieder zu einer Textdatei zusammengefuegt. Und so haette ich nun gerne die Ausgabe.

"Ordner 1\"
"Ordner 2\"
"Änderung in Datei.txt"
"Neue Datei.txt"
"Überarbeitete Datei.txt"
"Überarbeitete Datei.txt"

da die sortierung ohne Gebietsschema "C" alles verkrüppelt nehme ich diese also nicht. Mit Gebietsschema "C" kommen alle Umlaute und das ß nach dem Buchstaben z. Und so sieht die Ausgabe nun aus:

"Ordner 1\"
"Ordner 2\"
"Neue Datei.txt"
"Änderung in Datei.txt"
"Überarbeitete Datei.txt"
"Überarbeitete Datei.txt"

wenn ich nun mein %fixumlaut% aktiviere, dann sieht die Ausgabe so aus:

"Ordner 1\"
"Ordner 2\"
"änderung in Datei.txt"
"Neue Datei.txt"
"überarbeitete Datei.txt"
"überarbeitete Datei.txt"

alphabetisch korrekt, doch die Gross-/Kleinschreibung ist futsch - und genau das ist mein Problem welches ich oben geschildert habe. Vielleicht bekommt man die Lösung durch eine andere Herangehensweise auf die ich aber noch nicht gekommen bin....

[Edit]

...verschmerzbar waere nur die ersten Buchstaben der Objektnahmen auf umlaute zu prüfen um nur diese bei bedarf zu aendern. Also...

set "fixumlaut_firstletter=%fixumlaut:~0,1%
if "%fixumlaut_firstletter%" == "ä" set "fixumlaut_firstletter=aeþþþ
if "%fixumlaut_firstletter%" == "Ä" set "fixumlaut_firstletter=Aeþþþ
...
...
...und das gleiche beim Zurueckwandeln - also insgesamt 12 Abfragen pro Datei. Die Umlaute innerhalb der Objektnamen wuerden dann natuerlich nicht mitverarbeitet werden.
Nur ist das auch keine echte Lösung. Und so muss die Wandlung nachwievor nur als auswaehlbare Option in der Batch bleiben...

[Edit]

Gruesse, wobleibtdiezeit
Seltermann
Seltermann 11.08.2007 um 10:26:24 Uhr
Goto Top
Hi wobleibtdiezeit,

Hier ist mal ein Link zum Thema Umlaute.

Die deutschen Umlaute sind generell schon immer ein Thema für sich gewesen. Ich hatte selber schon einiges hin und her mit der Datenbank in der Firma.

Schreib mal dann zurück ob du das Problem gelöst bekommen hast.
Kann mich erst am Montag damit weiter beschäftigen.

Also bis dann
45753
45753 11.08.2007 um 10:28:22 Uhr
Goto Top
Hallo Seltermann.

Hier die Lösung...

Bei der 3. Ausgabe (separate Textdatei fuer Ordner + separate Textdatei fuer Datein) machte ich den Fehler und stellte chcp auf 1252. Man muss ihn auf 850 belassen. Zudem wandert mein erster %umlautfix%...

set "umlautfix=%umlautfix:ä=aeþþþ%
set "umlautfix=%umlautfix:ö=oeþþþ%
set "umlautfix=%umlautfix:ü=ueþþþ%
set "umlautfix=%umlautfix:ß=sþþþ%

...in den Muell. Mit anderen Worten man gibt den Text einfach aus ohne irgend eine weitere Einstellung/Veraenderung.

Nun sortiert man die zwei Textdateien mit sort und ohne Gebietsschema "C".

Beim separaten wiedereinlesen der zwei Textdateien stellt man vorher chcp auf 1252.
In der For-Schleife laest man nun folgenden %umlautfix% über jede textzeile drüberlaufen...

set "umlautfix=%umlautfix:Ž=Ä%
set "umlautfix=%umlautfix:™=Ö%
set "umlautfix=%umlautfix:š=Ü%
set "umlautfix=%umlautfix:„=ä%
set "umlautfix=%umlautfix:”=ö%
set "umlautfix=%umlautfix:=ü%
set "umlautfix=%umlautfix:á=ß%

...und gibt die gewandelten Zeilen in eine neue Textdatei wieder aus.

Und nun stimmt die Sortierung von vorne bis hinten.

Ohne Deinen Link waere ich auf die Idee allerdings nicht gekommen - THX a lot!

...wenn man eine Textdatei in der sich umlaute befinden sortieren moechte, dann muss man beim Einlesen dieser zuerst dem %Umlautfix% in entgegengesetzte Richtung durchfuehren - also - set "umlautfix=%umlautfix:Ä=Ž% - usw. und dies in eine Textdatei ausgeben. Dann diese mit sort sortieren. Nun diese wieder einlesen und den Fix - set "umlautfix=%umlautfix:Ž=Ä% - usw. drüberbügeln und in eine Textdatei ausgeben.

[Edit]

Ich sehe gerade, dass das Zeichen fuer ü nicht angezeigt wird. In der ersten Textausgabe ohne irgend eine Einstellung wirst du es aber selber sehen koennen...

[Edit]

Gruesse, wobleibtdiezeit
Seltermann
Seltermann 13.08.2007 um 15:48:34 Uhr
Goto Top
Klasse!!! Werde das mal morgen probieren. Hab nämlich gerade noch anderweitig zu tun.

Gruß Seltermann