2009-10-30 00:17:46 +0000 2009-10-30 00:17:46 +0000
67
67

Mehrere Befehle mit 1 Zeile in der Windows-Befehlszeile ausführen?

Wie kann ich mehrere Befehle in der Windows-Befehlszeile mit nur einer Zeile ausführen?

Sagen wir zum Beispiel, 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 natürlich nicht. Gibt es ein Zeichen oder einen Begrenzer wie ‘;’, um so etwas durchzuführen?

Antworten (6)

107
107
107
2009-10-30 00:24:41 +0000

Ja, das gibt es. Es ist &.

&& führt Befehl 2 aus, wenn Befehl 1 abgeschlossen ist, sofern er nicht fehlgeschlagen ist.

& wird trotzdem ausgeführt.

4
4
4
2014-02-12 06:33:03 +0000

Wenn Sie mehrere Befehle mit 1 Zeile ausführen wollen, wobei Sie die Befehle mit start beginnen, wenn Sie z. B. einen Befehl wie diesen ausführen wollten:

start "" netsh dump && pause

Dann müssen Sie dies in 2 Schritten tun (die einzeilige Lösung finden Sie am Ende dieser Antwort).

Zuerst schreiben Sie die Befehle in eine temporäre Stapeldatei (in diesem Fall können Sie & oder && verwenden):

echo netsh dump ^&^& pause ^&^& exit>foobar.cmd
  -or-
echo netsh dump ^& pause ^& exit>foobar.cmd

Beachten Sie, dass Sie jedes der "&"s (Ampersands) mit einem "^" “entkommen” lassen müssen, damit sie als normale Zeichen im echo-Befehl behandelt werden.  Alternativ können Sie die temporäre Stapeldatei mit einem Texteditor wie Notepad erstellen.

Verwenden Sie dann start, um die Batch-Datei zu starten:

start "" foobar.cmd
  -or-
start "" "temporary foobar.cmd"

Hinweis: Das leere Paar von Anführungszeichen steht für das "Title", das in der Titelleiste des Befehlsfensters angezeigt wird, das start öffnen wird. Dieses "Title"-Argument ist technisch gesehen ein optionales Argument für start, aber es ist eigentlich erforderlich, wenn der Befehl, den start ausführen wird, in Anführungszeichen steht. Zum Beispiel im zweiten Beispiel:

start "" "temporary foobar.cmd"

wenn Sie das leere Paar doppelter Anführungszeichen weglassen, wie hier:

start "temporary foobar.cmd"

dann wird start ein neues Befehlsfenster öffnen, und "temporary foobar.cmd" als neues Befehlsfenster "Title" verwenden, und nichts wird in dem neuen Befehlsfenster ausgeführt).

Wenn Sie möchten, dass start auf die Beendigung der Stapeldatei wartet (nachdem pause entlassen wurde), bevor start beendet wird, dann müssen Sie den Schalter /w zum Befehl start hinzufügen:

start "" /w foobar.cmd

Sie können dies alles in einer Zeile zusammenfassen und sogar die temporäre Batch-Datei entfernen (löschen) (foobar.cmd):

echo netsh dump ^&^& pause ^&^& exit>foobar.cmd && start "" /w foobar.cmd && del foobar.cmd
  -or-
echo netsh dump ^& pause ^& exit>foobar.cmd & start "" /w foobar.cmd & del foobar.cmd

Hinweis: Wenn Sie die temporäre Batch-Datei löschen wollen, müssen Sie start mit dem Schalter /w ausführen, da sonst die temporäre Batch-Datei wahrscheinlich gelöscht wird, bevor sie eine Chance hat, zu laufen.

4
4
4
2009-11-16 07:41:51 +0000

Zumindest unter MS-DOS 6.22 habe ich früher die Taste Strg+T benutzt, um eine Art Absatzsymbol zu erhalten. Das funktionierte genauso wie das von Phoshi erwähnte &. Das funktioniert aber nur, wenn Sie doskey.exe laufen haben.

0
0
0
2018-07-12 07:51:31 +0000

Ja verwenden Sie &!

%command1% & %command2% führt beide Befehle aus

%command1% && %command2% führt den ersten Befehl aus, wenn das funktioniert hat, führt den zweiten Befehl aus

%command1% || %command2% führt den ersten Befehl aus, wenn das fehlgeschlagen ist, führt den zweiten Befehl aus

Siehe hier

-1
-1
-1
2016-12-07 17:03:12 +0000

Ich habe festgestellt, dass die Verwendung von ‘START’ mehrere Befehle zum Funktionieren gebracht hat (ich verwende Windows 10 Home). Zum Beispiel:

START chrome.exe "page.web.com" & timeout 20
-2
-2
-2
2014-10-21 05:01:24 +0000

Machen Sie eine Batch-Datei mit einem kurzen Namen, z. B. bat.bat.

add cmd /c %1 
    cmd /c %2 
rem

und so weiter auf 9 Zeilen und speichern Sie

dann verwenden Sie es mit doppelten Anführungszeichen

bat "command one" "command two" "command three"

cmd /c wird jeder Befehl ausgeführt und für die nächste Zeile heruntergefahren nicht sagen, dies ist besser als && nur, dass es einfach ist.