Umlaut in Batch klappt nicht immer
Hallo zusammen,
ich habe ein Problem mit der Wiedergabe von Umlauten in Batchdateien.
Während die obere Zeile korrekt ausgeführt wird, wird in der unteren das ä durch ein kryptisches Zeichen wiedergegeben - und dann wird der Ordner natürlich nicht gefunden.
Ich habe mit die Datei mit notepad++ angeschaut, die ä's sind an beiden Stellen identisch, gleicher HEX-Code.
Woran kann das liegen?
Danke im Voraus
Sarek \\//_
ich habe ein Problem mit der Wiedergabe von Umlauten in Batchdateien.
chcp 1252
"C:\Program Files\freac\freaccmd.exe" -d "D:\" "C:\Users\User\AppData\Local\temp\änderungen temp\*.wav"
del "C:\Users\User\AppData\Local\temp\änderungen temp\*.wav" /Q
Während die obere Zeile korrekt ausgeführt wird, wird in der unteren das ä durch ein kryptisches Zeichen wiedergegeben - und dann wird der Ordner natürlich nicht gefunden.
Ich habe mit die Datei mit notepad++ angeschaut, die ä's sind an beiden Stellen identisch, gleicher HEX-Code.
Woran kann das liegen?
Danke im Voraus
Sarek \\//_
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 6236450578
Url: https://administrator.de/contentid/6236450578
Ausgedruckt am: 21.11.2024 um 13:11 Uhr
19 Kommentare
Neuester Kommentar
Weil Windows "doof" ist?
Keine Ahnung warum das nicht geht, aber ein Tipp wie ich es mache.
Ich habe es aufgegeben mit Notepad++ und der Codierung zu fummeln.
ich führe ein "copy con test1.bat" in einem CMD fenster aus.
drücke die Tasten üöäÜÖÄß und dann Strg+Z.
Dann habe ich unlesbare aber funktionierende Sonderzeichen die ich innerhalb des Editors kopieren.
Stefan
Keine Ahnung warum das nicht geht, aber ein Tipp wie ich es mache.
Ich habe es aufgegeben mit Notepad++ und der Codierung zu fummeln.
ich führe ein "copy con test1.bat" in einem CMD fenster aus.
drücke die Tasten üöäÜÖÄß und dann Strg+Z.
Dann habe ich unlesbare aber funktionierende Sonderzeichen die ich innerhalb des Editors kopieren.
Stefan
Zitat von @chgorges:
Moin,
ich haue meinen Kunden auf die Finger, wenn sie Umlaute oder Leerzeichen in Ordner- und Dateinamen verwenden, der Bumerang kommt sonst irgendwann zurück.
VG
Moin,
ich haue meinen Kunden auf die Finger, wenn sie Umlaute oder Leerzeichen in Ordner- und Dateinamen verwenden, der Bumerang kommt sonst irgendwann zurück.
VG
Moin,
Definitiv die falsche Vorgehensweise. Ich würde meine Unfähigkeit mit Zeichenkodierung umzugehen niemals an meinen Kunden / Kollegen auslassen.
Zitat von @Xerebus:
@chaot1coz
Ich vermute mal das du noch nicht soo alt bist.
"Es war damals" nicht nur die eigene Unfähigkeit, sondern die von viele Programmen die das einfach nicht konnten.
Und so ist man das halt noch gewöhnt sowas nicht in Pfade zu schreiben.
@chaot1coz
Ich vermute mal das du noch nicht soo alt bist.
"Es war damals" nicht nur die eigene Unfähigkeit, sondern die von viele Programmen die das einfach nicht konnten.
Und so ist man das halt noch gewöhnt sowas nicht in Pfade zu schreiben.
Mein Alter tut hier nichts zur Sache. Dass schlechte Angewohnheiten von "damals" bis heute übernommen werden, ist nichts Ungewöhnliches - dennoch falsch.
Heutzutage gibt es keinen Grund mehr seine User mit sowas zu gängeln.
Moin @SarekHL,
ist die Batch-Datei auch im ANSI-Format (wegen "chcp 1252") gespeichert oder liegt sie noch in UTF-8 vor? Das kannst du unten in der Fußzeile von Notepad(++) sehen.
Gruß
TA
ist die Batch-Datei auch im ANSI-Format (wegen "chcp 1252") gespeichert oder liegt sie noch in UTF-8 vor? Das kannst du unten in der Fußzeile von Notepad(++) sehen.
Gruß
TA
Zitat von @SarekHL:
Hast du die Codepage 65001 denn auch aktiviert? Das funktioniert hier bei mir problemlos (zumindest mit der unteren zeile, da ich freaccmd nicht verwende).versuche mal, die Batch mit Notepad++ in UTF-8 (ohne BOM) zu konvertieren
Hat nicht geklappt, im Gegenteil - damit geht auch die obere Zeile nicht mehr Wenn du chcp 1252 nutzen willst, reicht es nicht, die Datei einfach nur in ANSI abzuspeichern. In dem Fall musst du im Notepad++ auf "Codierung > Weitere > Mitteleuropäisch > Windows-1250" stellen. Dann funktionieren die Umlaute innerhalb der Batch zwar, sobald du jedoch Umleitungsoperatoren verwendest (etwa um in eine Logdatei zu schreiben oder Text aus einer anderen Datei einzulesen), sind die Umlaute dort dann falsch. Dieses Problem besteht mit UTF-8 normalerweise nicht.
Gruß Thomas
Servus @SarekHL,
das Problem ist häufig das schlecht programmierte Kommandozeilenprogramme gerne mal die aktive Codepage der Konsole verändern oder sie missachten und sie nicht wieder zurücksetzen, platziere also mal testweise das chcp zusätzlich nach dem ersten Befehl
Wenn es dann klappt ist das Programm welches du davor ausführst daran schuld
Alternativ kannst du das Programm selbst über start in einer separaten Konsole starten
Grüße Uwe
das Problem ist häufig das schlecht programmierte Kommandozeilenprogramme gerne mal die aktive Codepage der Konsole verändern oder sie missachten und sie nicht wieder zurücksetzen, platziere also mal testweise das chcp zusätzlich nach dem ersten Befehl
"C:\Program Files\freac\freaccmd.exe" -d "D:\" "C:\Users\User\AppData\Local\temp\änderungen temp\*.wav"
chcp 1252
del "C:\Users\User\AppData\Local\temp\änderungen temp\*.wav" /Q
Alternativ kannst du das Programm selbst über start in einer separaten Konsole starten
chcp 1252
start "" /wait "C:\Program Files\freac\freaccmd.exe" -d "D:\" "C:\Users\User\AppData\Local\temp\änderungen temp\*.wav"
del "C:\Users\User\AppData\Local\temp\änderungen temp\*.wav" /Q
Grüße Uwe
Hi!
Umlaute sind und waren immer schon ein Problem. Das beschränkt sich nicht nur auf die Comspec.
Es gibt Bereiche im OS die sind nicht sprachunabhängig und lassen sich auch nicht ändern nur weil man einen anderen Zeichensatz auf der Tastatur verwendet.
Bsp:
https://learn.microsoft.com/en-us/dotnet/standard/language-independence
Wenn du ein Batch-Script erstellst kannst aber versuchen es mit UTF-8 oder UTF-8 mit BOM-Codierung zu speichern anstatt mit ANSI oder OEM und dann das *.cmd auszuführen.
ein weiterer Lösungsansatz:
www.libe.net/Robocopy-Umlaute
In C# kannst du die Codierung im Code auf DE-DE ändern statt z.B. EN-US:
An besten ist es aber überhaupt Umlaute zu vermeinden!
Grüße!
Mayho
Umlaute sind und waren immer schon ein Problem. Das beschränkt sich nicht nur auf die Comspec.
Es gibt Bereiche im OS die sind nicht sprachunabhängig und lassen sich auch nicht ändern nur weil man einen anderen Zeichensatz auf der Tastatur verwendet.
Bsp:
https://learn.microsoft.com/en-us/dotnet/standard/language-independence
Wenn du ein Batch-Script erstellst kannst aber versuchen es mit UTF-8 oder UTF-8 mit BOM-Codierung zu speichern anstatt mit ANSI oder OEM und dann das *.cmd auszuführen.
ein weiterer Lösungsansatz:
www.libe.net/Robocopy-Umlaute
In C# kannst du die Codierung im Code auf DE-DE ändern statt z.B. EN-US:
System.Threading.Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("DE-DE");
An besten ist es aber überhaupt Umlaute zu vermeinden!
Grüße!
Mayho
Ich mache das immer bei Umlautsprobleme drüber=
Schreibe die Umlaute halt anders.
echo off
chcp 1252>nul
set ue=ü
set ae=ä
set oe=ö
set Uue=Ü
set Aae=Ä
set Ooe=Ö
set ss=ß
chcp 850>nul
HIER DEINE BEFEHLSKETTE ALS BEISPIEL echo Sch%oe%n, dass Herr M%ue%ller das %UUe%bungsbeispiel ist
pause
Bisher hat mir das immer geholfen.
Schreibe die Umlaute halt anders.
echo off
chcp 1252>nul
set ue=ü
set ae=ä
set oe=ö
set Uue=Ü
set Aae=Ä
set Ooe=Ö
set ss=ß
chcp 850>nul
HIER DEINE BEFEHLSKETTE ALS BEISPIEL echo Sch%oe%n, dass Herr M%ue%ller das %UUe%bungsbeispiel ist
pause
Bisher hat mir das immer geholfen.