Wie kann ich mehrere Befehle in der Windows-Befehlszeile mit nur einer einzigen Zeile ausführen?
Nehmen wir zum Beispiel an, ich möchte ein SVN-Update durchführen und dann alle Dateien an einen anderen Ort kopieren ...
svn update; copy *.* c:\development\copy\
Das funktioniert offensichtlich nicht. Gibt es ein Zeichen oder Trennzeichen wie ';' so etwas ausführen?
windows
command-line
T. Stone
quelle
quelle
&
und&&
funktionieren nur unter Windows 'cmd.exe
- das ist nicht DOS.Zumindest in MS-DOS 6.22 verwendete ich die Taste Ctrl+ T, um eine Art Absatzsymbol zu erhalten. Dies funktionierte genauso wie das &von Phoshi erwähnte. Dies funktioniert jedoch nur, wenn doskey.exe ausgeführt wird.
quelle
Wenn Sie mehrere Befehle mit einer Zeile ausführen möchten, mit der Sie die Befehle
start
beispielsweise starten , wenn Sie einen Befehl wie diesen ausführen möchten :Dann müssen Sie dies in zwei Schritten tun (eine einzeilige Lösung befindet sich am Ende dieser Antwort).
Schreiben Sie zuerst die Befehle in eine temporäre Batch-Datei (in diesem Fall können Sie
&
oder verwenden&&
):Beachten Sie, dass Sie jedes
"&"s
(kaufmännische Und) mit einem "Escape" versehen müssen"^"
, damit sie imecho
Befehl als normale Zeichen behandelt werden können . Alternativ können Sie die temporäre Stapeldatei mit einem Texteditor wie z. B. Notepad erstellen.Verwenden Sie dann
start
, um die Batch-Datei zu starten:Wenn Sie
start
warten möchten, bis die Batchdatei abgeschlossen ist (nachdem daspause
Symbol geschlossen wurde), bevorstart
der/w
Vorgang abgeschlossen ist, müssen Sie den Schalter zumstart
Befehl hinzufügen :Sie können dies alles in einer Zeile zusammenfassen und sogar die temporäre Batchdatei (
foobar.cmd
) entfernen (löschen ):Beachten Sie, dass Sie zum Löschen der temporären Stapeldatei
start
den/w
Switch verwenden müssen. Andernfalls wird die temporäre Stapeldatei wahrscheinlich gelöscht, bevor sie ausgeführt werden kann.quelle
/w
könnte man kurz schlafen gehen, bevor man die Datei löscht.timeout 2
werde es zum Beispiel tun.Wenn Sie den ersten Befehl mit einem if umbrechen möchten, aber trotzdem möchten, dass der zweite Befehl ausgeführt wird, müssen Sie auch das if mit einem cmd / c wie folgt umbrechen:
cmd / c falls vorhanden abc. (rd / q abc) & hallo echo
Wenn Sie dem if nicht cmd / c voranstellen, wird der gesamte Befehl Teil von if (was Sie möglicherweise nicht möchten).
quelle
(if exist abc. command₁) & command₂
start "" cmd /c "(command₁) & (command₂)"
werden auf keinen Fall im Web beantwortet, sondern sind die einzige Möglichkeit, die meisten Stapelanweisungen zu verknüpfen. Glückwunsch.if
aber wie der zweite Befehl noch würde unabhängig auszuführen dann dann Sie die wrap habenif
mit einemcmd /c
als auch“, und ich antwortete mit einer Art und Weise tun , ohnecmd /c
. Warum sagen Sie also, dass die einzige Möglichkeit, die meisten Stapelanweisungen zu verknüpfen, die Verwendung von istcmd /c
? Und warum wirfst dustart
in die Mischung?Ja nutzen
&
!%command1% & %command2%
führt beide Befehle aus%command1% && %command2%
Führt den ersten Befehl aus. Wenn dies funktioniert hat, führe den zweiten Befehl aus%command1% || %command2%
Führt den ersten Befehl aus. Wenn dies fehlschlägt, führe den Sekundenbefehl ausSehen Sie hier
quelle
&
,&&
und||
eigentlich kein Befehl, ist es Teil des Stapels. Kein Befehl.%command%
kann diese Zeichenfolge als Befehl ausführen, siehe hierIch habe festgestellt, dass die Verwendung von 'START' mehrere funktionierende Befehle behebt (ich führe Windows 10 Home aus). Zum Beispiel:
quelle
&
, nichtstart
!start
eingeben?Erstellen Sie eine Batch-Datei mit einem kurzen Namen, zB bat.bat .
und so weiter bis 9 Zeilen und speichern
Verwenden Sie es dann mit doppelten Anführungszeichen
cmd /c
Führt jeden Befehl aus und fährt die nächste Zeile herunter, ohne zu sagen, dass dies besser ist als &&, nur dass es einfach ist.quelle