783 Stimmen

Wie kann ich einen Zeilenumbruch in einer Batch-Datei ausgeben?

Wie können Sie einen Zeilenumbruch in die Ausgabe Ihrer Batch-Datei einfügen?

Ich möchte etwas tun wie:

echo hello\nworld

Die Ausgabe wäre:

hello
world

9 Stimmen

Das war für mich sehr nützlich. Ich musste Echo machen \n \n | my_app.exe in einem Skript. Ich habe (echo. && echo.) | my_app.exe

2 Stimmen

Einfacher Ansatz " Code beginnt :" > echo hello&echo world , gibt Ihnen was Sie brauchen

2 Stimmen

Sie können ein unsichtbares ascii chr(255) in einer separaten Zeile einfügen, das eine neue Leerzeile erzwingt. Halten Sie die [alt]-Taste gedrückt und drücken Sie 255 auf der Tastatur. Dies fügt chr(255) ein, das ein leeres Quadrat ist. echo (alt+255) " Sie können nur den Ziffernblock benutzen, nicht die Zahlen oben auf der Tastatur!

685voto

Matt Lacey Punkte 64983

Verwendung:

echo hello
echo:
echo world

537voto

Grimtron Punkte 6615

echo hello & echo.world

Dies bedeutet, dass Sie Folgendes definieren können & echo. als Konstante für einen Zeilenumbruch \n .

160voto

Erstellen Sie eine .bat-Datei mit folgendem Inhalt:

@echo off
REM Creating a Newline variable (the two blank lines are required!)
set NLM=^

set NL=^^^%NLM%%NLM%^%NLM%%NLM%
REM Example Usage:
echo There should be a newline%NL%inserted here.

echo.
pause

Sie sollten eine Ausgabe wie die folgende sehen:

There should be a newline
inserted here.

Press any key to continue . . .

Sie brauchen natürlich nur den Code zwischen den REM-Anweisungen.

121voto

macropas Punkte 3002

Es gibt eine Standardfunktion echo: in cmd/bat-Dateien, um eine Leerzeile zu schreiben, die eine neue Zeile in Ihrer cmd-Ausgabe emuliert:

@echo off
echo line1
echo:
echo line2

ou

@echo line1 & echo: & echo line2

Ausgabe der oben zitierten cmd-Datei:

line1

line2

87voto

jeb Punkte 74279

Wie die Antwort von Ken, aber mit der Verwendung der verzögerten Expansion.

setlocal EnableDelayedExpansion
(set \n=^
%=Do not remove this line=%
)

echo Line1!\n!Line2
echo Works also with quotes "!\n!line2"

Zunächst wird ein einzelnes Zeilenvorschubzeichen erzeugt und dem \n -Variable.
Dies funktioniert so, dass das Caret am Zeilenende versucht, das nächste Zeichen zu escapen, aber wenn dies ein Linefeed ist, wird es ignoriert und das nächste Zeichen wird gelesen und escaped (auch wenn dies ebenfalls ein Linefeed ist).
Dann brauchen Sie einen dritten Zeilenvorschub, um die aktuelle Anweisung zu beenden, sonst würde die dritte Zeile an die LF-Variable angehängt.
Auch Batch-Dateien haben Zeilenenden mit CR/LF, wobei nur die LF wichtig sind, da die CRs in dieser Phase des Parsers entfernt werden.

Der Vorteil der Verwendung der verzögerten Erweiterung ist, dass es keine spezielle Zeichenbehandlung gibt.
echo Line1%LF%Line2 würde fehlschlagen, da der Parser bei einzelnen Zeilenumbrüchen aufhört zu analysieren.

Weitere Erläuterungen finden Sie unter
SO:Lange Befehle über mehrere Zeilen in Vista/DOS-Batch-Datei (.bat) aufgeteilt
SO:Wie analysiert der Windows Command Interpreter (CMD.EXE) Skripte?

Bearbeiten: Vermeiden echo.

Das beantwortet die Frage nicht, denn die Frage bezog sich auf einzelne echo die mehrere Zeilen ausgeben kann.

Aber trotz der anderen Antworten, die die Verwendung von echo. um eine neue Zeile zu erstellen, ist zu beachten, dass echo. ist die schlechteste, da sie sehr langsam ist und komplett fehlschlagen kann, da cmd.exe nach einer Datei namens ECHO und versuchen Sie, ihn zu starten.

Um nur eine leere Zeile zu drucken, können Sie eine der folgenden Möglichkeiten verwenden

echo,
echo;
echo(
echo/
echo+
echo=

Aber die Verwendung von echo. , echo\ o echo: sollten vermieden werden, da sie sehr langsam sein können, je nachdem, wo das Skript ausgeführt wird, z. B. auf einem Netzlaufwerk.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X