Kann ich bei cmd.exe per Ausgabeumleitung CRLF verhindern?

Antwort vom

**Nein – `cmd.exe` selbst kann bei normaler Ausgabeumleitung `>` das Zeilenende nicht auf „nur LF“ umstellen. `cmd` arbeitet dabei unter Windows-typisch mit CRLF, und das lässt sich in `cmd.exe` nicht per Schalter für die Umleitung abschalten.** Der wichtige Unterschied ist: Die Umleitung `>` schreibt einfach das, was das jeweilige Programm an `stdout` ausgibt. Das Problem ist also meist nicht die Umleitung selbst, sondern dass `echo`, `set /p`-Konstruktionen oder das aufgerufene Konsolenprogramm CRLF erzeugen. ## Was konkret geht – und was nicht Wenn du in `cmd.exe` so etwas machst: ```bat echo Hallo>datei.txt ``` landet am Ende praktisch immer ein CRLF in der Datei. `cmd.exe` hat dafür keinen eingebauten Modus wie „LF only“. Wenn du also echte Unix-Zeilenenden brauchst, gibt es nur diese Wege: - ein anderes Tool verwenden, das LF ausgibt - die Datei nachträglich konvertieren - statt `cmd.exe` z. B. PowerShell, Bash oder ein eigenes Programm nutzen ## Der häufigste Workaround in `cmd` Wenn es dir nur darum geht, **gar keinen Zeilenumbruch** zu schreiben, geht das mit: ```bat <nul set /p "=Hallo">datei.txt ``` Das verhindert aber **nicht CRLF allgemein**, sondern schreibt einfach **überhaupt keinen** Zeilenumbruch. Sobald du in `cmd` wieder einen normalen Zeilenwechsel erzeugst, bist du typischerweise wieder bei CRLF. ## Wenn du unbedingt LF brauchst Dann ist ein externes Tool die saubere Lösung, zum Beispiel PowerShell: ```bat powershell -NoProfile -Command "[Console]::Out.NewLine='`n'; 'Hallo'; 'Welt'" > datei.txt ``` Oder noch kontrollierter direkt per API: ```bat powershell -NoProfile -Command "[IO.File]::WriteAllText('datei.txt', \"Hallo`nWelt`n\")" ``` Der zweite Weg ist robuster, weil du damit die Datei direkt mit genau den gewünschten Bytes schreibst, statt dich auf das Verhalten der Konsolenausgabe zu verlassen. ## Praktisch entscheidend Wenn du **in `cmd.exe` bleiben musst**, kannst du: - **ohne Zeilenumbruch** schreiben: `<nul set /p` - **LF-only nicht nativ erzwingen** Wenn du **LF-only wirklich brauchst**, ist `cmd.exe` das falsche Werkzeug. Dafür ist PowerShell oder ein kleines Hilfsprogramm die deutlich sauberere Lösung.

Kategorie: Technik Tags: Cmd Ausgabeumleitung Crlf

Verwandte Fragen

Warum hängt cmd.exe bei der Ausgabeumleitung ein Leerzeichen an?

cmd.exe hängt bei Ausgabeumleitung nicht „einfach so“ ein Leerzeichen an; meist kommt das Leerzeichen aus echo, Variablenersetzung oder der konkreten Syntax vor > – und die U...

Wie prüfe ich in cmd.exe Variablen auf nachgestellte Leerzeichen?

In cmd.exe prüfst du trailing spaces am zuverlässigsten, indem du den Originalwert mit einer rechts getrimmten Variante vergleichst; direkte String-Prüfungen sind in Batch dafür un...