Wie schreibe ich einen Windows-Dateinamen mit åäö in der Eingabeaufforderung?

704
Kjell Rilbe

Ich muss eine Befehlszeile in die Eingabeaufforderung schreiben, die auf eine Datei verweist, die åäö im Namen enthält, aber ich kann es nicht richtig verstehen. Windows sollte auf Codepage win1252 und die Eingabeaufforderung auf Oem850 festgelegt werden.

Der spezifische Dateiname lautet:

Förändringar.txt 

Ich konnte verwenden dir /x, um den kurzen 8.3-Dateinamen zu erhalten und ihn zu verwenden, aber es macht mir einen Fehler, den langen Namen nicht richtig zu erkennen ...

Aktualisieren:

Die Kommentare haben mich zu dem Schluss gebracht, dass es an der Eingabeaufforderung kein Problem gibt ( cmd.exezu klären). Es scheint ein Problem mit der jeweiligen Konsolenanwendung zu sein, die ich ausführen wollte ( gfix.exevom Firebird-Datenbankmanager). Anscheinend kann die Befehlszeilenargumente nicht korrekt von der Konsolen-Codepage in das konvertiert werden, was sie intern verwenden muss.

0
Auf welcher Windows-Version befinden Sie sich und auf welcher Befehlszeilenschnittstelle (command.com (hoffentlich nicht), cmd.exe, Powershell oder anderen Drittanbietern?) Verwenden Sie? Ich hatte noch nie so etwas wie das Problem, das Sie beschreiben, was mich glauben lässt, dass Sie etwas Ungewöhnliches tun. Bitte ** [edit] ** um Ihre Frage zu klären. a CVn vor 9 Jahren 0
äöüÄÖÜ funktionieren hier gut mit cmd.exe, dir und ren, also was genau funktioniert nicht wie erwartet? Werner Henze vor 9 Jahren 0
Aha, Entschuldigung. Ich denke, es ist kein Problem mit der Eingabeaufforderung (cmd.exe), sondern ein Problem mit der tatsächlichen Konsolenanwendung, die ich aufrufen wollte. Es scheint, dass der Dateiname von den Befehlszeilenargen nicht korrekt von der Konsolen-Codepage konvertiert werden kann. Ich denke, ich muss mich an die App-Entwickler wenden. (Es ist das gfix-Dienstprogramm des Firebird-Datenbankmanagers.) Kjell Rilbe vor 9 Jahren 0
Bitte [bearbeiten] Sie Ihre Frage und zeigen Sie ein Code-Snippet, das die Regeln [Minimal, Vollständig und Verifizierbar] (http://stackoverflow.com/help/mcve) erfüllt, und geben Sie an, ob Sie `gfix.exe` von reinem` cmd ausführen `oder aus einem Batch-Skript. Verwenden Sie `chcp 1257` oder` chcp 1254`, bevor Sie `gfix.exe 'in einem geöffneten` cmd'-Fenster ausführen. Verwenden Sie einfach "chcp" für eine Codepage, auf der alle Zeichen definiert sind. JosefZ vor 8 Jahren 0

1 Antwort auf die Frage

-1
MSalters

Die normale Eingabeaufforderung in Windows ist CMD.EXE. Dies ist ein Unicode-Programm. In Unicode sind keine Dinge wie "Win1252" und "OEM850" erforderlich.

Ich vermute, dass Sie Batch-Dateien verwenden, da es sich dabei nicht um Unicode handeln kann. CMD.EXE kann Batchdateien verstehen, die nicht Unicode sind. Sie sollten jedoch nicht verwendet werden, wenn Sie Nicht-ASCII-Zeichen verwenden. Verwenden Sie einfach Unicode-Batchdateien.

Wenn nicht cmd.exe, dann verwendet die Windows-Konsole selbst immer noch Codepages bis heute, und während Programme _can_ Unicode ausgeben können, müssen sie sich dazu bemühen. (Ich habe mich seit einem Jahrzehnt damit befasst und gerade auf einem neuen Server 2012 R2-System erneut getestet, um sicherzustellen, dass dies der Fall ist.) Der in CMD eingebaute Befehl `dir` zeigt nur Fragezeichen für Zeichen außerhalb der aktuellen OEM-Codepage (wie von angezeigt `chcp`), und die Konsole selbst lässt mich diese nicht eingeben (z. B. wird durch Drücken von` ąčęė` `acee` angezeigt, wenn die Codepage nicht 775 ist). PowerShell macht das auch nicht richtig. grawity vor 9 Jahren 0
@grawity: Ich glaube nicht, dass es so ist. Die Fragezeichen sind kein Ergebnis von Codeseiten. Dies ist das Ergebnis der Verwendung einer Schriftart, die keine Zeichen enthält. Programme müssen für die Konsole nichts Besonderes tun, `WriteConsole` ist für Unicode-Programme` WriteConsoleW` (breit). Genau wie bei MessageBox -> MessageBoxW. MSalters vor 9 Jahren 1
Hmm, Sieht so aus, als hätten Sie Recht mit der Schriftart. Ich kann nicht glauben, dass ich diesen _ wieder vergessen habe. Ich finde das alle paar Monate immer wieder neu ... grawity vor 9 Jahren 0