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
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
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.
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 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.
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!
0 Stimmen
Genauso wie die Hälfte der Computerreparatur darin besteht, das Gerät anzuschließen und einzuschalten, ist die Hälfte der Softwareentwicklung das, was ich als Raumfahrttechnik . Wir besoin de unsere leeren Zeilen genau so.
0 Stimmen
Wie wäre es damit?
echo Yes&echo No
1 Stimmen
@jwzumwalt danke für den Vorschlag mit alt+255, funktioniert in der Kommandozeile hervorragend
0 Stimmen
Printf " \n\n\n "
0 Stimmen
Hat jemand hier newline als externe Befehls-Batchdatei angeboten?
NEWLINE.bat
. Einige der hier vorgestellten Lösungen funktionieren in einer separaten Batchdatei nicht richtig. Einige Syntaxen ergeben zum BeispielECHO is off
wenn es direkt von der Befehlszeile aus aufgerufen wird.