kalamari
Goto Top

Umlautzeichen in einer Batch Datei richtig darstellen?

Guten Morgen!

Folgendes, wenn ich einen Text oder ein Wort in einer Batch Datei habe, welches ein Umlaut enthält, werden diese nicht richtig dar gestellt.

Bsp.: echo Übermorgen ist Mittwoch

Dann kommen anstelle des Ü wirres Zeug raus.
Ich hatte das schon mal gelöst, indem ich aber bei meinem PC irgendwo etwas umgestellt hatte.
Leider weiß ich absolut nicht mehr, was oder wo das war.

Unabhängig davon, kann man dem Batch irgendwie beibringen, dass Umlaute richtig dar gestellt werden?

Vielen Dank für eure Hilfe!

Content-ID: 197754

Url: https://administrator.de/forum/umlautzeichen-in-einer-batch-datei-richtig-darstellen-197754.html

Ausgedruckt am: 23.12.2024 um 10:12 Uhr

Friemler
Friemler 28.01.2013 um 10:38:51 Uhr
Goto Top
Hallo Kalamari,

Zitat von @Kalamari:
Unabhängig davon, kann man dem Batch irgendwie beibringen, dass Umlaute richtig dar gestellt werden?

Ja, Du musst das Batchfile in der Codierung OEM850 speichern (das ist die Codierung, die von der Konsole benutzt wird). Wenn Du mit Notepad speicherst, wird auf einem deutschen Windows in der Codierung Windows-1252 gespeichert.

Ein Editor, der in OEM850 speichern kann, ist z.B. Notepad++.

Gruß
Friemler
Kalamari
Kalamari 28.01.2013 aktualisiert um 10:59:42 Uhr
Goto Top
Danke für die rasche Antwort!

Ich habe bis jetzt das Textpad verwendet.
Geht das mit dem auch?

Vielleicht sollte ich noch erwähnen... im Textpad erscheint alles richitg.
Sobald ich die Batch Datei aber starte, wird aus den Umlauten alles komische Zeichen.

Vielen vielen Dank!
Neo1981
Neo1981 28.01.2013 um 11:21:45 Uhr
Goto Top
Versuch mal statt den Umlauten folgende Symbole einzusetzen.

Ž Ä
™ Ö
š Ü
„ ä
” ö
 ü
á ß
Friemler
Friemler 28.01.2013 aktualisiert um 11:31:31 Uhr
Goto Top
Hallo Kalamari,

in TextPad kann man Dokumentklassen definieren. Jeder Dokumentklasse kann der zu verwendende Zeichensatz zugeordnet werden.

Erstelle eine Dokumentklasse für Batchfiles, ordne dieser Klasse die Dateiendungen bat und cmd zu und stelle als Zeichensatz den Terminal-Font ein. Ich habe es jedenfalls auf diese Weise gemacht.

Gruß
Friemler
Kalamari
Kalamari 28.01.2013 um 11:38:15 Uhr
Goto Top
Sorry, blicke ich nicht ganz durch :/
Wenn ich diese Dokumentenklasse geöffnet habe, wie lade ich dann die bat Files in diese Klasse?

Vielen Dank!


Um nochmal darauf zurück zu kommen, ich hatte das Problem schon mal, lag aber damals an meinem PC.
Denn in emails, die ich bekomme, werden die Umlaute auch nicht richtig angezeigt...
Friemler
Friemler 28.01.2013 um 11:42:42 Uhr
Goto Top
Wie man Dokumentklassen in TextPad erstellt sollte Dir die Hilfe verraten.

Eine Dokumentklasse ist nur ein Profil, d.h. eine Sammlung von bestimmten Einstellungen, die wirksam werden, wenn eine Datei in TextPad geladen wird, deren Typ zu den Dateitypen gehört, die dieser Dokumentklasse zugeordnet sind.

Gruß
Friemler
Kalamari
Kalamari 28.01.2013 aktualisiert um 11:48:19 Uhr
Goto Top
Ich hab diese Dokumentenklasse nun erstellt.

Habe gespeichert, als bat und cmd und wie Du gesagt hast Terminal.

Jedesmal, wenn ich eine bat Datei öffne, sind die Zeichen nach wie vor ein Wirr Warr und die Einstellungen in der Dokumentenklasse, sowie Schriftart ect. wurden nicht übernommen face-sad
Friemler
Friemler 28.01.2013 um 12:10:08 Uhr
Goto Top
Welche Version von TextPad nutzt Du denn? Wenn die Einstellungen der Dokumentklasse nicht gespeichert werden, hört sich das an, als ob es sich um eine alte Version von TextPad handelt, die noch nicht Vista/Win7 kompatibel ist und ihre Einstellungen direkt ins Installationsverzeichnis schreiben will, was unter den genannten Betriebssystemen nur mit erhöhten Rechten möglich ist.

Ein Upgrade auf die aktuellste TextPad Version ist kostenlos möglich.
Kalamari
Kalamari 28.01.2013 aktualisiert um 12:14:22 Uhr
Goto Top
Hmm, ich verzweifel...

Ist die neueste Version.
Admin auf dem PC bin ich natürlich auch.


Mal schnell Testweise habe ich Notepad++ probiert.
Hier die Kodierung auf OEM850 umgestellt und die bat Datei dann so abgespeichert.

Im Notepad++, ebenfalls wie im TectPad werden mir die Zeichen alle richtig angezeigt.
Sobald die bat Datei dann läuft, werden aus den Umlauten wieder Sonderzeichen :/
Kann es nicht irgendwo anders liegen das Problem?
Wie gesagt, in meinem Mails habe ich das Problem auch.

UNd ich weiß einfach um´s Verrecken nicht mehr, was ich damals wo umgestellt habe, damit alles richtig funktioniert hat face-sad
Kalamari
Kalamari 28.01.2013 um 19:11:02 Uhr
Goto Top
Habe eben die selbe Batch Datei auf meinen 2. Laptop getestet.
Dort werden die Umlaute einwandfrei angezeigt...

Ich weiß nicht mehr weiter :/
Friemler
Friemler 28.01.2013 aktualisiert um 19:20:59 Uhr
Goto Top
Hallo,

ich bin jetzt wieder an dem Rechner, wo TextPad installiert ist. Ich hatte vergessen, dass es noch eine Einstellung gibt, die notwendig ist, um in der Codierung OEM850 zu speichern. Der Einfachheit halber hier mal Bilder der entsprechenden Dialoge.

Kennst Du schon:
a0cd408d3ab566b2c7126a3a24a06327

Das hat noch gefehlt:
68b5ea871f525e974bb2386e1613dcd1

BTW: Ich habe mir außerdem den DOS-Font für CP850 von Uwe Sieber installiert, da der in Windows enthaltene Terminalfont nur in den Größen 9pt (zu klein) und als nächstes 12pt (zu groß) funktioniert. Bitte auch die Hinweise lesen!!!

Gruß
Friemler
Kalamari
Kalamari 28.01.2013 um 21:59:30 Uhr
Goto Top
Ich danke Dir vielmals für Deine Mühen.
Jedoch hat das bei mir leider nicht den gewünschten Erfolg gebracht face-sad

Hab nun alles genau so wie Du mir beschrieben bzw. anhand der Bilder gezeigt hast eingestellt.
Auch werden die Scripte, bzw. die Umlaute alle richtig im Textpad angezeigt.
Speichere ich das Script dann als bat Datei ab, werden die Umlaute wieder nicht mehr dar gestellt.

Selbst wenn ich nach hinzufügen dieser Dokumentenklasse jetzt angenommen ein Wort mit einem Umlaut ändern will, geht das selbst im Textpad nicht mehr.
Das heißt, das sind geladene Scripte, die ich einmal erstellt habe und die ich jetzt ändern muss.
Alles, was unberührt bleibt, wird nur im Textpad richtig dargestellt.

Schreibe ich was neues mit äüö ß... gehts im Textpad nicht mehr und als laufende Bat Datei erst recht nicht mehr face-sad

Was mich aber am meisten stutzig macht...
Ich habe schon etliche bat Dateien geschrieben, alle funktionieren auf dem anderen Laptop einwandfrei!
Was heißt funktionieren... funktionieren tun sie hier auf meinem Laptop auch, aber die Umlaut werden einfach nicht dar gestellt.
Warum auf dem anderen Laptop schon?
Das ist vom Windows System her eigentlich wie eine Kopie von meinem.
Nichts mehr, nichts weniger installiert...

Ich verstehs einfach nicht und bin schön langsam aber sicher, voll frustriert :/
Friemler
Friemler 28.01.2013 um 22:56:16 Uhr
Goto Top
  • Erstelle doch mal mit Notepad eine Datei mit dem Inhalt äöüßÄÖÜ und speichere mit ANSI-Codierung.
  • Dann mach das selbe mit TextPad/Notepad++ und speichere mit DOS/OEM850.
  • Schau Dir die erstellten Dateien in einem Hexeditor an.

Wenn ich das mache, stehen folgende Hex-Codes in den Dateien:
Zeichen  ä     ö     ü     ß     Ä     Ö     Ü
OEM850   0x84  0x94  0x81  0xE1  0x8E  0x99  0x9A
ANSI     0xE4  0xF6  0xFC  0xDF  0xC4  0xD6  0xDC

Was steht bei Dir?

Gruß
Friemler
Kalamari
Kalamari 28.01.2013 aktualisiert um 23:38:06 Uhr
Goto Top
Hi

Bei mir steht genau das gleiche da, nur ein bisschen anders dar gestellt.
Was verwendest Du für einen Editor?

Hätte gerne Bilder angehangen, aber das geht ja irgendwie nur intern?

Gut, hier das Bild mit ANSI

http://www.abload.de/img/hex-ansi91uim.jpg

und hier mit OEM850

http://www.abload.de/img/hex-oem850kru0x.jpg

Was mir gerade jetzt aufgefallen ist, sollten beim OEM Bild nicht die Zeichen auch richtig angezeigt werden?
Es steht das gleich wie bei Dir da, aber die Zeichen werden nicht angezeigt.

Testweise habe ich jetzt mal das ganze Script im Textpad kopiert, ins Notepad zwischen gescpeichert und dann im Ultra Edit und Notepad++ direkt als neue Datei in OEM850 kopiert und als BAT Datei gespeichert.

Dann noch eine neue bat Datei erstellt mit @echo äüöÄÖÜß - wird ebenfalls nicht richtig aus gegeben...
Selber Fehler, bei allen Editoren.
Auf meinem zweiten Laptop wird auch die neue Datei anstandslos richtig dar gestellt..
Friemler
Friemler 29.01.2013 um 17:18:48 Uhr
Goto Top
Hallo,

ich benutze HxD - Hexeditor (portable Version erhältlich). Der Grund für die falsche Anzeige der Zeichen bei der Datei notepad-OEM850.txt liegt darin, dass Dein Hexeditor die falsche Codepage für die Konvertierung "Zeichencode -> grafische Darstellung des Buchstabens" verwendet. Bei HxD kann man das über eine Drop-Down List in der Toolbar des Programms von ANSI (Defaultwert) nach DOS/IBM-ASCII umschalten, dann sollten die Zeichen auch richtig angezeigt werden.

Zum Einbinden von Bildern: Wenn Du Deinen eigenen Beitrag bearbeitest, gibt es dort einen Tab "Bilder", über den Du Bilder hochladen kannst. Die generierten Links kannst Du in einen beliebigen Deiner Beiträge oder auch in Kommentare zu fremden Beiträgen einbinden. Wenn Du einen neuen Beitrag nur als Entwurf speicherst, kannst Du diesen Beitrag als Bildspeicher für Deine sämtlichen Forumsaktivitäten nutzen.

Aber zurück zu Deinem Problem: Es wäre nützlich ein Bild des Konsolenfensters zu posten, damit ich die falsch ausgegebenen Umlaute mal sehe. Und lass bitte den folgenden Batchcode (stammt vom Kollegen rubberman) laufen. Was wird ausgegeben?

@echo off &setlocal

for /f "tokens=3" %%i in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage" /v "OEMCP"') do (  
  set /a oemcp=%%i
)

for /f "tokens=3" %%i in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage" /v "ACP"') do (  
  set /a acp=%%i
)

echo OEM-Codepage : %oemcp%
echo ANSI-Codepage: %acp%

pause

Gruß
Friemler
Kalamari
Kalamari 29.01.2013 um 17:30:42 Uhr
Goto Top
Hi

Irgendwie bin ich zu blöd.... bzgl. der Bilder....

Gut, ich hab das Batch Script laufen lassen.
Im Bild (wieder nur ein Link, weil ich es nicht auf die Reihe bekomme, direkt einzubinden) kann man eh schon gut erkennen, wie oder was mein Problem ist....

http://www.abload.de/img/bat-ausgabejruml.jpg

Ich hoffe, wir finden noch irgendwann das Übel face-sad

Vielen Dank
Friemler
Friemler 29.01.2013 aktualisiert um 17:50:20 Uhr
Goto Top
Hi,

führe bitte in einem Konsolenfenster die Befehle
chcp
und
echo %cmdcmdline%
aus und poste das Ergebnis.

Mich würden auch die Zeichencodes der (falsch ausgegebenen) Buchstaben äöüßÄÖÜ interessieren. Also den Befehl
>"%Userprofile%\Desktop\Ausgabe.txt" echo äöüßÄÖÜ
als Batchfile in OEM850 speichern und ausführen. Dann die Datei Ausgabe.txt vom Desktop mit HxD öffnen und die Zeichencodes ablesen.

Danach den gleichen Befehl von Hand im Konsolenfenster eingeben und ebenfalls die Ausgabe.txt mit HxD öffnen und Zeichencodes ablesen.

Gruß
Friemler
Kalamari
Kalamari 29.01.2013 aktualisiert um 19:04:03 Uhr
Goto Top
Okay ...
Ich habe das jetzt alles mal gemacht.

Habe mit Notepad++ die Datei erstellt.
Bevor ich mit Notepad das gemacht habe, habe ich im Notepad++ auf "Kodierung .... Zeichensatz....Westeuropäisch....850" eingestellt.

Ich habe alles selber mit der Hand geschrieben, nichts irgendwo her kopiert.

Der Code sieht so aus:

echo off
title Test für Forum
mode 90,35
cls
echo.
chcp
echo.
echo %cmdcmdline%
echo.
echo Sag ein ä .... sag ein ü .... sag ein ö
echo.
echo Sag ein Ä .... sag ein Ü .... sag ein Ö
echo.
echo Sag ein ß .... sag ein © ....
echo.
pause
exit

Das Ergebiss des Ganzen spektakel sieht so aus:
http://www.abload.de/img/testbild-fuer-forumzbs57.jpg

Dann habe ich das, was Du gesagt hast, nochmal per Hand nur die eine Zeile ...

echo äöüßÄÖÜ > "%Userprofile%\Desktop\Ausgabe.txt"

im Dos Fenster ausgeführt.
Hier kam es dann schon zu dem Problem, dass ich keine öäüßÖÄÜ schreiben kann.
Sobald ich ein ä anklicke, kommst schon anstelle des ä die Hyroglyphe...

Hoffe hab alles richtig gemacht und das hilft hier weiter.

Nachtrag: Selbst wenn ich die Zeichen öäüßÖÄÜ von hier aus dem Forum in das DOS Fenster kopiere, werden sie nicht richtig angezeigt, sondern gleich umgewandelt in diese Hyroglyphen..

Wie schreibt man eigentlich Hyroglyphen? face-smile
Friemler
Friemler 29.01.2013 aktualisiert um 20:53:51 Uhr
Goto Top
Sooo, die bei Dir angezeigten Hieroglyphen face-wink sind kyrillische Buchstaben. Die Zeichencodes für äöüßÄÖÜ aus der Codepage 850 (Konsole auf einem deutschen Windows) entsprechen diesen Zeichen, wenn zur Konvertierung "Zeichencode -> grafische Darstellung des Buchstabens" die Codepage 855 für das kyrillische Alphabet verwendet wird.

Russische Zeichensätze - klingelt da bei Dir was? Hast Du irgendetwas installiert, das damit in Zusammenhang steht?

Trotzdem ist da etwas gewaltig faul. Der Befehl chcp hat als Ergebnis ja Aktive Codepage: 850. zurückgeliefert. Nach den angezeigten Zeichen hätte es aber Aktive Codepage: 855. sein müssen.

Evtl. wurde Deine Version des Terminal-Fonts gegen eine russische Variante ausgetauscht.

[EDIT]
Die Font-Dateien von Windows liegen unter %WinDir%\Fonts. Der Terminal-Font heißt vgaxxx.fon, wobei das xxx für die Codepage steht. Evtl. ist die vga855.fon in vga850.fon umbenannt worden. Die originale vga850.fon könntest Du Dir von Deinem zweiten Laptop holen.

Die Dateien im Font-Verzeichnis siehst Du nur von der Konsole aus. Der Windows-Explorer stellt in diesem Verzeichnis nur Symbole für die Font-Namen dar. Für die Konsolen-Fonts findet sich deshalb nur ein Eintrag Terminal, obwohl es eine ganze Menge vgaxxx.fon-Dateien gibt.
[/EDIT]
Kalamari
Kalamari 29.01.2013 um 21:29:33 Uhr
Goto Top
Hallo

Nein, ich habe nichts russisches installiert, nicht mal ansatzweise ..
Auf deutsch heißt das jetzt, ich kopiere einfach diese vga850.fon von meinem anderen Laptop in diesen hier.
Aber ich kann diese, so wie ich Deinen Beitrag verstanden habe, nicht einfach normal über den Explorer und einem USB Stick kopieren?
Richtig verstanden?

Das heißt, über das Dos Verzeichnis hinarbeiten und per Hand den Befehl zum Kopieren auf den USB Stick geben?
Oder hab ich das total falsch verstanden jetzt?

Vielen Dank
Friemler
Friemler 29.01.2013 aktualisiert um 22:15:48 Uhr
Goto Top
Ja, Du musst über die Konsole in das Verzeichnis navigieren und die Dateien per Konsolenbefehl kopieren.

Wenn eine gewisse Logik in dem Benennungsschema für die Fonts liegt, sollte es die vga850.fon sein.

Bevor Du auf dem Zielrechner etwas überschreibst mache eine Sicherungskopie der entsprechenden Dateien.

Keine Haftung für irgendwelche Schäden am System. face-wink


[EDIT]
Es wäre auch möglich, dass Du eine Kopie der vorhandenen vga850.fon machen musst und die Kopie unter dem Namen vgaoem.fon oder vgaoem_0.fon ins Fonts-Verzeichnis zurückkopieren musst.
[/Edit]
Kalamari
Kalamari 29.01.2013 um 22:26:42 Uhr
Goto Top
Okay, ich werd einfach mal mein Glück versuchen...
Da drin sind einige vga*.fon...

Werds einfach probieren

Melde dann Erfolg oder Misserfolg face-smile

Danke vielmals inzwischen!
Kalamari
Kalamari 29.01.2013 aktualisiert um 23:28:01 Uhr
Goto Top
So, melde mich zurück mit einer "Zugriff verweigert" Meldung beim Kopieren.

Egal, welchen Befehl ich anwende oder welche Attribute ich setze, ich bekomme immer ein Zugriff verweigert.
Habe es auch schon im abgesicherten Modus probiert.
Immer "Zugriff verweigert"

Ich habe es mit copy, xcopy %windir% usw versucht..
Natürlich auch die Eingabeaufforderung als Admin ausgeführt.
UAC ist ebenfalls deaktiviert...


Wie kann ich das umgehen?

Vielen Dank!
Friemler
Friemler 30.01.2013 um 08:26:06 Uhr
Goto Top
Moin,

das Fonts-Verzeichnis gehört dem internen Windows-Account Trusted Installer. Deshalb kann man nicht einfach so Dateien dort hinein kopieren. Fonts kann man per "Rechtsklick -> Installieren" installieren.

Gruß
Friemler
Kalamari
Kalamari 30.01.2013 um 09:11:57 Uhr
Goto Top
Guten Morgen

Ich habe die vga850.fon installieren können - Leider keine Veränderung meines Problems face-sad
Dann habe ich die beiden anderen Dateien, eine nach der anderen umbenannt und ebenfalls installiert.

Bei beiden Dateien sagte mir Windows, dass die vga850.fon bereits installiert sei, hab sie aber trotzdem überschrieben - auch keine Veränderung...

Danke
Friemler
Friemler 30.01.2013 um 13:59:43 Uhr
Goto Top
Hi,

versuche mal folgendes:

  • Gehe ins Systemmenü des Konsolenfensters (Klick auf das kleine Icon in der linken oberen Ecke des Fensters)
  • Eigenschaften auswählen
  • Registerkarte "Schriftart"

Dort sollte unter "Schriftart" der Eintrag "Rasterschrift" markiert sein. Probiere dann unter "Größe" die verschiedenen Größen durch. Durch Auswahl einer anderen Schriftgröße wird teilweise auch eine andere Font-Datei aktiviert. Jeweils mit "OK" bestätigen und im Konsolenfenster Umlaute eingeben.

Du könntest auch den schon erwähnten Font von Uwe Sieber installieren. Ich habe dadurch unter "Größe" 2 Zeilen mit dem Eintrag "8x12".

Falls Du eine passende Einstellung gefunden hast, wähle im Systemmenü statt "Eigenschaften" den Eintrag "Standardwerte" und nimm dann die Einstellung nochmal vor, damit sie in Zukunft bei neuen Konsolenfenstern auch wirksam wird.

Wenn das alles auch nicht funktioniert, aktiviere unter "Schriftart" den Eintrag "Lucida Konsole" und schau dann mal nach, ob alles korrekt angezeigt wird.

Gruß
Friemler
Kalamari
Kalamari 30.01.2013 aktualisiert um 16:29:32 Uhr
Goto Top
Hi Friemler!

Das hat leider alles nichts gebracht face-sad
Da es sich hier um irgendeinen Systemfehler - oder eigentlich keine Ahnung was genau handelt, bzw. gehandelt hatte, habe ich mich nach Probieren Deiner Vorschläge einfach dazu entschlossen, mein System neu zu installieren.

Siehe da, jetzt funktionieren sämtliche Umlaute wieder so, wie sie sollen, egal ob in der Batch, e-mail oder Internet Links - es funktioniert einfach wieder alles einwandfrei face-smile

Mein System, oder WIndows7 ist nicht so umfangreich, also nicht viel installiert gewesen usw....
Daher war dies für mich einfach die schnellste und einfachste Möglichkeit, da wir hier zusammen seit Tagen an meinem Problem versucht haben, den Fehler zu finden.

Auf jedenfalls ein ganz ganz ganz großes Dankeschün an Dich Friemler, denn Du hast Dich wirklich tief und intensiv mit meinem Problem befasst, zudem sicherlich sehr viel Zeitaufwand betrieben!
Danke Danke face-smile

Schade, dass wir das wirkliche Problem nicht gefunden haben :/
Hätte mich selber auch interessiert, was daran Schuld war, vor allem, weil eigentlich nichts installiert wurde, was mein System so beeinträchtigt haben könnte.

In diesem Sinne, vielen vielen Dank nochmal!!!