Wie kann ich eine neue Zeile in einen Befehl cmd.exe einfügen?

65609
rudimenter

Ich versuche, einen Befehl cmd.exemit einem Zeilenumbruch oder einer neuen Zeile als Teil des Befehls auszuführen (siehe unten):

command -option:text  whatever 

Jede neue Zeile führt jedoch den Befehl aus, anstatt den Befehl in der nächsten Zeile fortzusetzen.

Wie kann ich also ein neues Zeilenzeichen eingeben oder einen mehrzeiligen Befehl in cmd.exe erstellen?

16
Mögliches Duplikat von [Wie kann ich einzelne Befehlszeilenbefehle in mehreren Zeilen in Windows ausführen?] (Https://superuser.com/questions/187410/how-do-i-do-single-command-line-command-on- mehrere Zeilen in Fenstern) phuclv vor 6 Jahren 0
[Lange Befehle sind in der Stapeldatei (.bat) von Windows Vista auf mehrere Zeilen aufgeteilt.] (Https://stackoverflow.com/q/69068/995714) phuclv vor 6 Jahren 0

5 Antworten auf die Frage

15
Darth Android

Verwenden Sie den ^Charakter als Fluchtweg:

command -option:text^

whatever

Ich gehe davon aus, dass Sie cmd.exe von Windows XP oder ähnlichem verwenden. Dies ist kein tatsächliches DOS. Wenn Sie tatsächlich DOS verwenden (MS-DOS, Win3.1, Win95, Win98, WinME), dann glaube ich nicht, dass es für Newlines eine Flucht gibt. Sie müssen eine benutzerdefinierte Shell ausführen. cmd.exe fordert Sie auf, "Mehr?" Jedes Mal, wenn Sie die Eingabetaste mit einem ^am Ende der Zeile drücken, drücken Sie einfach noch einmal die Eingabetaste, um die Zeilenumbrüche tatsächlich zu aktivieren / deaktivieren.

Zu cool, das wusste ich nicht. T.J. Crowder vor 14 Jahren 0
Das, was Sie vorschlagen, ist, dass ich mehr Text als Zeilenumbruch eingeben kann. Der Newline wird nicht beibehalten. Was ich will ist, dass zwischen "Text" und "Was auch immer" eine neue Zeile steht. So etwas wie: "text \ nwhatever" rudimenter vor 14 Jahren 1
Ich glaube, Sie müssen dafür zwei Zeilenumbrüche verwenden, mein schlechtes, weil ich das in meinem ursprünglichen Beitrag nicht bemerkt habe (jetzt bearbeitet). Darth Android vor 14 Jahren 0
@ TJ Crowder Ich weiß, ich habe es auch nicht getan, bis ich vor ein paar Tagen nach einer anderen Frage hier gesucht habe. Darth Android vor 14 Jahren 0
Wenn Sie Leerzeichen im Text haben, müssen Sie sie in Anführungszeichen einschließen. Stellen Sie außerdem sicher, dass Sie das Ende-Anführungszeichen angeben. Andernfalls wird das Caret-Zeichen als Escape-Zeichen ignoriert und als Text behandelt. Schließlich müssen Sie den Text in jeder Zeile, die Leerzeichen enthält, in Anführungszeichen setzen (tun Sie dies auch, wenn er keine Leerzeichen enthält, um sicher zu sein), und hinter dem abschließenden Anführungszeichen für jede Zeile, die fortgesetzt wird, ein Einfügemarke setzen. Synetech vor 13 Jahren 1
Ich bin hier gelandet, als ich versuchte einen Weg zu finden, um Zeilenumbrüche in die Kommentare eines `SHUTDOWN.EXE'-Befehls einzufügen. Am Ende habe ich so etwas verwendet: `shutdown -s -t 900 -c" foo bar "^` **> More? ** `" baz "^` **> More? ** `" test this. "` Es funktionierte. Synetech vor 13 Jahren 0
Leider scheint es nicht möglich zu sein, ein Zeilenvorschubzeichen in eine Zeichenfolge in Anführungszeichen einzufügen. Ian Goldby vor 12 Jahren 0
2
Amit Naidu

Verwenden Sie Alt-Codes mit dem Nummernblock

C:\>ver  Microsoft Windows [Version 6.3.9600]  C:\>echo Line1◙Line2 >con Line1 Line2  C:\> 

Dieses Zeilenvorschubzeichen kann mit dem Nummernblock als Alt-Code in der CLI eingegeben werden: Halten Sie bei aktiviertem NumLock die Taste ALT gedrückt, und geben Sie den Wert 10 ein, bevor Sie ALT loslassen. Wenn Sie auch das CR benötigen, geben Sie beide mit Alt + 13 und dann Alt + 10 ein:♪◙

Hinweis: Dies funktioniert nicht in einer Batchdatei.

Anwendungsbeispiel:

Sie versuchen, die Umgebungsvariablen% PATH% oder% CLASSPATH% zu lesen, um einen schnellen Überblick darüber zu erhalten, was in welcher Reihenfolge vorhanden pathist. Die zurückgegebene Textwand ist jedoch nicht lesbar. Dann können Sie dies schnell eingeben:

echo %path:;=◙% >con 

Bearbeiten:

Die >conProblemumgehung wurde hinzugefügt, die Brent Rittenhouse für neuere Versionen von cmd.exe entdeckte, bei denen die ursprüngliche Methode nicht mehr funktionierte.

Das scheint für mich nicht zu funktionieren. Ich ende damit, dass "e2 99 aa e2 97 99" übergeben wurde. Eine Art Unicode-Codepunkt? Ich sehe aber die Charaktere in der Kommandozeile. Irgendwelche Vorschläge? Brad vor 6 Jahren 0
@Brad Ich kann bestätigen, dass es in der neuen cmd.exe unter Windows 10 nicht mehr zu funktionieren scheint und selbst meine alte Windows 7-Box verhält sich nicht mehr so. Amit Naidu vor 6 Jahren 0
Seltsam! Ich frage mich, ob ich eine alte cmd.exe von etwas ausgraben kann .... Brad vor 6 Jahren 0
@ Rad, ich habe nur ein paar Dinge ausprobiert und festgestellt, dass Sie dieses alte Verhalten erhalten können, wenn Sie in den Konsolen-Eigenschaften zu Raster-Schriftarten wechseln, anstelle von Lucida- und True Type-Schriftarten und das Kontrollkästchen "Legacy-Konsole verwenden" aktivieren. Aber auf einem hochauflösenden Monitor sieht es wirklich schlecht aus. Amit Naidu vor 6 Jahren 0
Oh wow! Seltsam. Jemand hat gerade kommentiert, dass ich in Powershell backtick-r-backtick-n verwenden kann, was funktioniert. Brad vor 6 Jahren 0
Das Verrückteste daran ist, dass, wenn Sie a) eine ältere Konsole und b) Rasterzeichensätze wie angegeben verwenden, sie funktionieren, und wenn Sie die Schriftart auf Lucida Console (oder wie auch immer sie genannt wird) umschalten, wird sie wechseln und Sie werden sehen Der Text ist immer noch mit der neuen Zeile darin, aber wenn Sie es jetzt versuchen, funktioniert es nicht. Selbst wenn Sie die gerade kopierte Zeile kopieren und erneut einfügen (ich dachte, es war vielleicht eine andere Codepage oder etwas anderes), funktioniert es STILL NICHT. Beispiel: https://i.imgur.com/kKX2jiy.png Brent Rittenhouse vor 6 Jahren 0
Ich glaube, ich habe eine Lösung gefunden, die vollständig in JEDER Schriftart funktioniert! Wenn Sie einfach die Zeile mit den Alt-10-Zeichen ausgeben und sie dann in CON umleiten, funktioniert das! Zum Beispiel: `(Echo New-Line wurde erkannt gh ^ <--- HERE!)> CON` Die umgebenden Klammern sind optional. Hier ist ein robusteres Beispiel dafür, was Sie damit tun können (UND-Wagenrückläufe, die jetzt funktionieren, und völlig unabhängig!): Https://i.imgur.com/qqN37PH.png Brent Rittenhouse vor 6 Jahren 1
@BrentRittenhouse Wow, schön gemacht! Ich habe es mit meinem "Weg" -Echo getestet und es funktioniert jetzt wunderbar. Ich habe das schon lange vermisst, danke! `echo% path:; = ◙%> con`. @ Brad, geht auf. Amit Naidu vor 6 Jahren 0
1
grawity

I believe you can't do that from the Windows cmd.exe shell. (It is not DOS.)


You do not need a full "custom shell" for that. You will only need to write something like this (example in Python):

import subprocess subprocess.call(["C:\\bin\\sometool.exe", "test\nwith\nnewlines"]) 

Or Ruby:

Kernel::exec "C:\\bin\\sometool.exe", "test\nwith\nnewlines" 

See, it's not that hard.

1
Haydar

I don't know if this will work for you but by putting &echo (the following space is important). in between each statement that you want on a new line. I only tried this with a simple bat file of

echo %1 

Then saved that as testNewLines.bat

So then the cmd line

testNewLines first line&echo Second Line&echo Third line 

Resulted in the following being echoed back

first line
second line
Third line

1
Brent Rittenhouse

Ich habe die Antwort von Amit erweitert ( https://superuser.com/a/1132659/955256 ). Ich habe einen Weg gefunden, dies in jeder Schriftart zu tun, OHNE die alte Konsole zu verwenden.

Alles, was Sie tun müssen, ist, die Zeile mit den Alt-10-Zeichen auszustatten conund sie dann umzuleiten, und es wird funktionieren!

Zum Beispiel gegeben:

(Echo New-Line wurde erkannt ◙ ^ <--- HIER!)> CON

edit: Fun fact, es scheint, dass Sie die Weiterleitung an den Anfang setzen können:

> CON-Echo New-Line wurde erkannt rig ^ <--- HIER!

Komisch, nicht wahr?

Sie erhalten eine Ausgabe von:


New-line detected rigghhhtt  <-- HERE! 

(Die umgebenden Klammern sind optional.)

Hier ist ein robusteres Beispiel dafür, was Sie mit diesen UND-Wagenrückläufen machen können, die jetzt völlig unabhängig funktionieren !:

Das Beste ist, dass dies auch funktioniert, wenn Sie zu einer Datei umleiten!
ändern (einfach > CONzu> desired_output_file.txt

Genießen!