larz
Goto Top

Umlaute in Batch-Datei bei Ausgabe richtig darstellen

Guten Morgen zusammen,

ich habe eine Batch, die bspw. eine Benutzerabfrage á la "Möchten Sie wirklich... (J/N)" im Fenster anzeigt.
Nun bekommen die Benutzer üblicherweise statt dem "ö" irgendeinen Platzhalter z.B. "%" angezeigt.

Wie kann ich bewerkstelligen, dass im CMD-Fenster ü, ö, ä usw. angezeigt werden?

Bitte keine Vorschläge wie "schreib doch oe statt ö" oder philosophische Einwände von wegen "in der altehrwürdigen EDV gibt's keine Umlaute", das sehe ich im Backend grundsätzlich auch so, aber es muss doch trotzdem eine Möglichkeit geben...

Ich habe es schon mit verschiedenen Codepages versucht, aber die Umstellung in der Batch am Anfang wirkt sich irgendwie so gar nicht auf den Rest aus... kann hier jemand helfen?

Vielen Dank

Gruß
Larz

Content-ID: 125470

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

Ausgedruckt am: 16.11.2024 um 12:11 Uhr

Kirschi
Kirschi 22.09.2009 um 08:46:07 Uhr
Goto Top
Moin,

Du solltest einen anderen Editor benutzen, der alte MS-DOS z.B. tut das richtig (edit.com) oder versuche mal notepad+

Gruß
Andreas
Larz
Larz 22.09.2009 um 09:09:44 Uhr
Goto Top
Servus Kirschi,

zum erstellen der Dateien nehme ich notepad++

Aber wenn der Benutzer die Batch ausführt, nimmt er den Standard-Befehlsinterpreter (oder wie man das nennen mag), das kann ich ja nicht beeinflussen.

Nicht im Editor wird falsch angezeigt, sondern bei der Ausführung

Gruß
Larz
Kirschi
Kirschi 22.09.2009, aktualisiert am 18.10.2012 um 18:39:27 Uhr
Goto Top
Hallo Larz,

ja ich meinte notepad++ face-smile, aber scheinbar kann der auch nicht im erforderlichen ASCII speichern, werde nochmal probieren.

schau mal hier: Umlaute in Textdatei mit Eingabeaufforderung korrekt wiedergeben?

Gruß
Andreas
rubberman
rubberman 22.09.2009 um 09:35:40 Uhr
Goto Top
Es handelt sich um das typische ASCII - ANSI - Problem. ANSI - Codepage zB. 1252, ASCII-Codepage zB. 850 in deutschen Landen. Kirschi hat also Recht, edit.com arbeitet mit der ASCII - Codepage, genau wie der Commandline - Interpreter. Wenn du dort Umlaute schreibst, werden sie korrekt angezeigt. Alternativ kannst du einen Editor nutzen, bei dem du die Codepage einstellen kannst, oder die Codepage im Batch mittels CHCP af1252 umstellen.

Grüße
rubberman
Larz
Larz 22.09.2009 um 11:23:39 Uhr
Goto Top
Hallo rubberman,

ich habe eine Batchdatei die da lautet:

CHCP 1252
@ECHO Müller
pause

und raus kommt
"M³ller"
siehe http://yfrog.com/0ubildcxj
81825
81825 22.09.2009 um 11:37:42 Uhr
Goto Top
Aber nur bei der Ausgabe in der Console selbst. Wenn du z. B. nach Zeile 02 noch ein md Müller einfügst, wirst du feststellen, dass das Verzeichnis mit dem gewünschten Namen auch korrekt angelegt wird.

Es gibt imo keine Möglichkeit, die Ausgabe in der Console genau so anzuzeigen, wie sie auch bei der Ausführung verwendet wird, wenn Nicht-Ascii-Zeichen verwendet werden.

Edit: Rest entfernt, da Müll. face-wink
Larz
Larz 22.09.2009 um 11:43:32 Uhr
Goto Top
Hallo greypeter,

Ja, das ist richtig. Ich möchte ja aber die Ausgabe am Bildschirm/in der Console beeinflussen...
Ok, ich musste eben mir mal wieder bewusst machen, das Speichern als batch nicht gleich Speichern als batch ist.
Kann mir denn dann jemand sagen wir ich Notepad++ es einstellen muss dass mit dem richtigen Zeichencode gearbeitet wird? Ich habe

- UTF-8 ohne BOM
- UTF-8
- UCS2 Big Endian und
- UCS2 Little Endian

bereits probiert. Es wird eher noch unlesbarer dadurch...

Gruß
Larz
Larz
Larz 22.09.2009 um 11:56:27 Uhr
Goto Top
Nicht schön, aber ein Notbehelf - habe die Datei in Notepad++ geschrieben, gespeichert. Danach in edit.com geöffnet, Umlaute korrigiert und nochmal abgespeichert... naja

Eleganter wäre wohl wirklich wenn Notepad++ dazu zu bewegen wäre, Textdateien als ASCII zu speichern...
[Edit] Weiß jemand von euch wie die richtige Einstellung wäre? [/Edit]

Gruß
Larz
rubberman
rubberman 22.09.2009 um 18:40:12 Uhr
Goto Top
Notepad++ cotiert afaik nur in ANSI und den von dir geposteten Zeichencodes.
Es gibt andere Editoren (ich nutze z.B. die Freeware PSPad), die die OEM Codepage unterstützen.

Aber (auch wenns etwas spät kommt) per Änderung der Codepage im Batch geht das schon - nur etwas anders als von dir vermutet:
@echo off &setlocal
chcp 1252>nul
set "text=Müller"  
chcp 850>nul
echo %text%
pause
Kirschi
Kirschi 22.09.2009 um 18:46:44 Uhr
Goto Top
Hallo nochmal,

ich habe heute mal geschaut und nichts gefunden, daß Notepad++ ASCII unterstützt. So bleibt wohl nur der Weg wie Du und ich ihn auch mache, über die edit.com. Einen anderen freien Editor habe ich auch nicht gefunden, mit Ausnahme von Emacs, aber den zu bedienen...

EDIT:
@rubberman
danke für den Editor-Tipp

Andreas
Larz
Larz 23.09.2009 um 09:14:38 Uhr
Goto Top
Moin rubberman,

ok, von hinten durch die Brust ins Knie face-smile
Dann müssen die "Textblöcke" eben vorher definiert werden. FInde ich persönlich aber fast noch schöner wie mit edit.com abzuspeichern...

Danke

Gruß
Larz
Larz
Larz 23.09.2009 um 09:49:38 Uhr
Goto Top
Hab's jetzt so gelöst:

Am Anfang jeder Batch definiere ich einfach die Sonderzeichen, die ich will und nutze dann die VariableN:

chcp 1252>nul
set ue=ü
set ae=ä
set oe=ö
set Uue=Ü
set Aae=Ä
set Ooe=Ö
set ss=ß
chcp 850>nul
@echo Sch%oe%n, dass Herr M%ue%ller das %Uue%bungsbeispiel ist

Gruß
Larz
bastla
bastla 25.09.2009 um 08:16:49 Uhr
Goto Top
Hallo an Alle!
Notepad++ cotiert afaik nur in ANSI und den von dir geposteten Zeichencodes.
Als Ergänzung:
Für Notepad++ gibt es das "ConvertExt"-Plugin (hier zu finden) - dieses kann allerdings nur mit der ANSI-, nicht mit der Unicode-Version verwendet werden.

Die ANSI-Version ist in der gezipten Downloadversion auf der sourceforge-Downloadseite enthalten.

Grüße
bastla
DRwindows97
DRwindows97 05.11.2011 um 23:11:10 Uhr
Goto Top
Notepad++ kann wohl ein Dokument im ASCII Format bearbeiten.
Dazu könnt ihr einfach die Bearbeitungssprache unter Sprachen -> M -> MS DOS Stil einstellen.
yakazaa
yakazaa 21.03.2012 um 08:53:08 Uhr
Goto Top
DU hast meinen Tag gerettet ! :T
TOP ! Der Tipp funktioniert und ist mit wenig Aufwand verbunden !

Leider verliert man in dieser Ansicht die farbliche Unterteilung der Datei,
daher erstelle ich das Skript ab jetzt in der Auswahl Sprache -> B -> Batch und änder dann zum Schluss, wie von dir beschrieben auf M -> MS-DOS Stil und passe dann die Umlaute an.

Danke für deinen Tipp, danach suche ich schon was länger !!
Gruß yaka
retradnews
retradnews 24.03.2015 um 12:30:34 Uhr
Goto Top
Hallo,
Ist zwar schon 'ne Weile her, aber evtl. kann es ja noch mal jemand brauchen (so wie ich heute ^^) :
Man kann in Notepad++ seine vorhandene Batch Datei konvertieren :

Kodierung -> Zeichensatz -> Westeuropäisch -> OEM 850

Man bekommt eine Warnung, das dies nicht rückgängig gemacht werden kann (zumindest nicht automatisch).
Hintergrund ist, das vorhandene Umlaute in ihre CP850 äquivalente umgewandelt werden (z.B. ä=├ñ, ö= ├Â, ü= ├╝).
Man muss also seine Batch noch einmal auf Umlaute überprüfen (ggf. Suchen&Ersetzen) und dann speichern.
Die Kodierung bleibt dann im gewähltem Zeichensatz.

Hat den Vorteil das man nicht von Batch auf MS-DOS umstellen muss, und damit die Syntaxhervorhebung verliert.
BerndP
BerndP 29.07.2015 um 08:46:39 Uhr
Goto Top
servus, da werden sie geholfen http://www.libe.net/index.php/Robocopy-Umlaute
EnnEnn
EnnEnn 13.02.2016 aktualisiert um 16:15:14 Uhr
Goto Top
danke, BerndP - DAS wars!, bin wirklich geholfen worden
frankenfrank
frankenfrank 08.03.2016 um 08:29:48 Uhr
Goto Top
Hier meine bat-Datei, die ohne Konvertierung Umlaute anzeigt. Du musst dir die entsprechenden Zeichen nur kopieren. Das mit dem kleinen ü ist etwas tricky.

MfG Frank

:: = = = = = START = = = = =
@ECHO OFF
CLS
ECHO.
ECHO Umlaute in cmd
ECHO.
ECHO 'ue' ist ein unsichtbares Zeichen (kopieren geht auch wenn mans nicht sieht)  
ECHO.
ECHO Hier alle Umlaute hintereinander „ ”  Ž ™ š
ECHO.
ECHO.
ECHO ae = „
ECHO oe = ”
ECHO ue = 
ECHO.
ECHO AE = Ž
ECHO OE = ™
ECHO UE = š
ECHO.
ECHO.
PAUSE
EXIT
:: = = = = = ENDE = = = = =
TomPiXX
TomPiXX 21.09.2016 um 08:10:50 Uhr
Goto Top
Was macht ihr euch das so kompliziert?

Datei einmal kurz in den Sprachen auf MS-DOS-Stil einstellen und danach direkt wieder auf Batch. Fertig.
juer63
juer63 03.01.2017 aktualisiert um 09:18:48 Uhr
Goto Top
Meine (BAT)Lösung sieht wie folgt aus:
Im PSPAD das Dateiformat auf Kamenicky (CP895) einstellen.
Nach dem Abspeichern in dem Format funktioniert die Ausgabe der Umlaute. Die Darstellung der Batch-Datei im Explorer-Fenster ist jedoch nur im ANSI-Format korrekt.

Eine schönere Lösung, die keine Änderung des Formates erforderlich macht, ist es, stattdessen das Skript nicht als Batch sondern als Powershell-Skript auszuführen. D. h. die Extension von .bat auf .ps1 ändern und im Kontextmenü "mit Powershell ausführen" auswählen.

Gruß Jürgen
Hemingway
Hemingway 24.02.2017 aktualisiert um 02:21:41 Uhr
Goto Top
Es geht doch so viel einfacher ...

Wenn man eine Batch-Datei in Notepad++ lädt, zeigt NP++ sie, egal wie sie zuvor gespeichert wurde, als ANSI-Datei an, was dazu führt, dass die Sonderzeichen falsch wiedergegeben werden - sowohl in NP++ als auch später bei der Ausführung.

Um die Datei korrekt abzuspeichern und für die richtige Darstellung bei der Ausführung zu sorgen, muss man folglich bei jeder Bearbeitung erneut die Kodierung ändern:

Kodierung - Weitere ... - Westeuropäisch - OEM 850.

Die Statuszeile zeigt dann "OEM 850" an, und so speichert NP++ die Datei auch ab.

Nun ist die ewige Klickerei für die Kodierung natürlich furchtbar nervig. So geht es viel einfacher und flotter:

Man stelle im NP++-Menü Einstellungen - Tastatur - Main menu, Zeile 219 ("OEM 850") einen geeigneten Shortcut ein, z.B. Alt+8. (Wenn der Shortcut bereits anderweitig vergeben ist - wie im Fall Alt+8 -, gibt es eine Meldung im Kästchen darunter. Ich habe die andere Zuweisung für Alt+8 dann eben entfernt, weil ich die nicht brauche.)

Jetzt öffnet man die Datei, drückt Alt+8 - und los geht die Bearbeitung.

(Die Sprach-Einstellung fürs Syntax-Highlighting ist natürlich "Batch", und die bleibt nach dem ersten Festlegen beim späteren neuen Öffnen der Datei erhalten.)
Christian181005
Christian181005 05.02.2019 um 17:38:50 Uhr
Goto Top
Ist etwas spät aber du kannst im Notepad++ unter Kodierung ==> weitere ==> Westeuropäisch ==> OEM 858
Dann noch alle umlaute wieder richtig schreiben und fertig.
MFG Christian