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
Die Lösungen von Ken und Jeb funktionieren gut.
Aber die neuen Zeilen werden nur mit einem LF-Zeichen erzeugt, und ich brauche CRLF-Zeichen (Windows-Version).
Dazu habe ich am Ende des Skripts LF in CRLF umgewandelt.
Beispiel:
TYPE file.txt | FIND "" /V > file_win.txt
del file.txt
rename file_win.txt file.txt
Wenn man berühmte Namen verwenden muss \n in String-Literalen, die an eine Variable übergeben werden können, können Sie einen Code wie in der Hallo.bat Skript unten:
@echo off
set input=%1
if defined input (
set answer=Hi!\nWhy did you call me a %input%?
) else (
set answer=Hi!\nHow are you?\nWe are friends, you know?\nYou can call me by name.
)
setlocal enableDelayedExpansion
set newline=^
rem Two empty lines above are essential
echo %answer:\n=!newline!%
Auf diese Weise kann die mehrzeilige Ausgabe an einer Stelle vorbereitet werden, sogar in einem anderen Skript oder einer externen Datei, und an einer anderen Stelle gedruckt werden.
Der Zeilenumbruch wird gehalten in Zeilenumbruch variabel. Ihr Wert muss ersetzt werden nach die echo Zeile erweitert wird, verwende ich setlocal enableDelayedExpansion um Ausrufezeichen zu aktivieren, die Variablen bei der Ausführung erweitern. Und die Ausführung ersetzt \n con Zeilenumbruch Inhalt (siehe Syntax unter Hilfe einstellen ). Wir könnten natürlich auch !newline! während der Einstellung der respuesta sondern \n bequemer ist. Es kann von außen weitergegeben werden (versuchen Sie Hallo R2 \nD2 ), wo niemand den Namen der Variablen kennt, die den Zeilenumbruch enthält (Ja, Hallo C3!newline!P0 funktioniert auf die gleiche Weise).
Das obige Beispiel kann zu einer Unterroutine oder einem eigenständigen Batch verfeinert werden, der wie folgt verwendet wird call:mlecho Hi\nI'm your comuter
:
:mlecho
setlocal enableDelayedExpansion
set text=%*
set nl=^
echo %text:\n=!nl!%
goto:eof
Bitte beachten Sie, dass ein zusätzlicher Backslash das Skript nicht daran hindert, die folgenden Daten zu analysieren \n Teilstring.
Bitte beachten Sie, dass alle Lösungen, die die Cursorpositionierung nach Konsole Virtuelles Terminal - Sequenzen, Cursorpositionierung mit:
Sequenz
Code
Beschreibung
Verhalten
ESC [ <n> E
CNL
Cursor nächste Zeile
Cursor abwärts <n> Zeilen von der aktuellen Position
nur Arbeit Solange der untere Rand des Konsolenfensters nicht erreicht ist .
Unten gibt es keinen Platz mehr, um den Cursor nach unten zu bewegen, also bewegt er sich einfach nach links (mit der CR
de CRLF
) und die zuvor gedruckte Zeile wird vom Anfang an überschrieben.
Für Windows 10 mit virtuelle Terminalsequenzen gibt es die Möglichkeit, die Cursorposition in hohem Maße zu kontrollieren.
Um die Escape-Sequenz 0x1b zu definieren, kann Folgendes verwendet werden:
@Echo off
For /f %%a in ('echo prompt $E^| cmd')Do set \E=%%a
Um einen einzelnen Zeilenumbruch zwischen Strings auszugeben:
<nul set /p "=Hello%\E%[EWorld"
Zur Ausgabe n
Zeilenumbrüche wo n
wird durch eine ganze Zahl ersetzt:
<nul set /p "=%\E%[nE"
Viele
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.