it-swarm.com.de

Windows: Wie kann man den mehrzeiligen Befehl an der Eingabeaufforderung angeben?

wie erweitern wir einen Befehl auf die nächste Zeile?

im Grunde was ist die Windows-Alternative für Linux

ls -l \
/usr/

hier verwenden wir den Backslash, um den Befehl in der nächsten Zeile zu erweitern

was ist das Äquivalent für Fenster?

125
Jigar

Nachdem Sie fast alle Tasten auf meiner Tastatur ausprobiert haben:

C:\Users\Tim>cd ^
Mehr? Desktop

C:\Users\Tim\Desktop>

Es scheint also der ^ Schlüssel zu sein.

217
Timbo

In der Windows-Eingabeaufforderung wird der ^ verwendet, um das nächste Zeichen in der Befehlszeile zu kennzeichnen. (Wie \ wird in Strings verwendet.) Zeichen, die in der Befehlszeile verwendet werden müssen, sollten mit einem ^ vorangestellt werden. Aus diesem Grund funktioniert sie für die Newline.

Für die Referenz gelten die Zeichen, für die eine Escape-Funktion erforderlich ist (sofern als Befehlsargumente angegeben und nicht in Anführungszeichen): &|() 

Das Äquivalent Ihres Linux-Beispiels wäre also (das More? / Prompt sein):

C:\> dir ^
More? C:\Windows
46
Daemin

Das Caret-Zeichen funktioniert, die nächste Zeile sollte jedoch nicht mit Anführungszeichen beginnen. z.B. das wird nicht funktionieren:

C:\ ^
"SampleText" ..

Nächste Zeile ohne Anführungszeichen beginnen (kein gültiges Beispiel, nur zur Veranschaulichung)

3
Ali

Wenn Sie hierher auf der Suche nach einer Antwort waren, aber nicht genau wie das OP gemeint hat, dh wie erhalten Sie mehrzeilige CMDs in einer single -Linie? antworte für dich.

Der Versuch, dies mit Dingen zu verwenden, die tatsächlich Paspeln verwenden, wie etwa findstr, ist ziemlich problematisch. Dasselbe gilt für den Umgang mit elses. Wenn Sie jedoch möchten, dass ein mehrzeiliger bedingter Befehl direkt über CMD und nicht über eine Batchdatei ausgeführt wird, sollte dies gut funktionieren.

Nehmen wir an, Sie haben so etwas in einem Stapel, den Sie direkt im Befehl Prompt ausführen möchten: 

@echo off
for /r %%T IN (*.*) DO (
    if /i "%%~xT"==".sln" (
        echo "%%~T" is a normal SLN file, and not a .SLN.METAPROJ or .SLN.PROJ file
        echo Dumping SLN file contents
        type "%%~T"
    )
)

Jetzt können Sie das Zeilenfortsetzungskarat (^) verwenden und manuell wie folgt eingeben, aber Warnung, es ist langwierig und wenn Sie alles vermasseln, können Sie die Freude daran wieder erlernen.

Nun, es funktioniert nicht nur mit ^ dank der Escape-Mechanismen innerhalb der Klammern shrug Zumindest nicht wie beschrieben. Man müsste die Karat tatsächlich so verdoppeln:

@echo off ^
More? for /r %T IN (*.sln) DO (^^
More? if /i "%~xT"==".sln" (^^
More? echo "%~T" is a normal SLN file, and not a .SLN.METAPROJ or .SLN.PROJ file^^
More? echo Dumping SLN file contents^^
More? type "%~T"))

Stattdessen können Sie ein schmutziger hinterhältiger Scripter von der falschen Seite der Tracks sein, der kein Karat benötigt, indem Sie sie für eine einzelne Pipe (|) pro Fortsetzung einer Schleife/eines Ausdrucks austauschen: 

@echo off
for /r %T IN (*.sln) DO if /i "%~xT"==".sln" echo "%~T" is a normal SLN file, and not a .SLN.METAPROJ or .SLN.PROJ file | echo Dumping SLN file contents | type "%~T"
0