Wie erweitern wir einen Befehl auf die nächste Zeile?
Grundsätzlich, was ist die Windows-Alternative für Linux
ls -l \
/usr/
Hier verwenden wir Backslash, um den Befehl in der nächsten Zeile zu erweitern
Was ist das Äquivalent für Windows?
Wie erweitern wir einen Befehl auf die nächste Zeile?
Grundsätzlich, was ist die Windows-Alternative für Linux
ls -l \
/usr/
Hier verwenden wir Backslash, um den Befehl in der nächsten Zeile zu erweitern
Was ist das Äquivalent für Windows?
Antworten:
Nachdem ich fast jede Taste auf meiner Tastatur ausprobiert habe:
C:\Users\Tim>cd ^
Mehr? Desktop
C:\Users\Tim\Desktop>
Es scheint also der Schlüssel zu sein.
In der Windows-Eingabeaufforderung wird das ^
verwendet, um das nächste Zeichen in der Befehlszeile zu maskieren. (Wie \
wird in Zeichenfolgen verwendet.) Zeichen, die in der Befehlszeile so wie sie sind verwendet werden müssen, sollten ein ^ vorangestellt werden, daher funktioniert dies für die neue Zeile.
Als Referenz sind die Zeichen, die maskiert werden müssen (sofern sie als Befehlsargumente und nicht in Anführungszeichen angegeben sind): &|()
Das Äquivalent Ihres Linux-Beispiels wäre also (das Mehr? Ist eine Eingabeaufforderung):
C:\> dir ^
More? C:\Windows
Wenn Sie hierher gekommen sind, um eine Antwort auf diese Frage zu suchen, aber nicht genau so, wie es das OP bedeutete, dh wie Sie mehrzeiliges CMD dazu bringen, in einer einzigen Zeile zu arbeiten, habe ich eine Art gefährliche Antwort für Sie.
Der Versuch, dies mit Dingen zu verwenden, die tatsächlich Rohrleitungen verwenden, wie zum Beispiel, findstr
ist ziemlich problematisch. Gleiches gilt für den Umgang mit else
s. Wenn Sie jedoch nur möchten, dass ein mehrzeiliger bedingter Befehl direkt von CMD und nicht über eine Batchdatei ausgeführt wird, sollte dies gut funktionieren.
Angenommen, Sie haben so etwas in einem Stapel, den Sie direkt in der Eingabeaufforderung 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 es manuell so eingeben, aber Warnung, es ist mühsam und wenn Sie es vermasseln, können Sie die Freude lernen, alles wieder abzutippen.
Nun, es wird nicht funktionieren, nur ^
dank der Fluchtmechanismen in Klammern zuckt die Achseln. Zumindest nicht wie geschrieben. Sie müssten 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 keine Karat benötigt, indem Sie sie gegen 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"