Wie führe ich mehrere Befehle gleichzeitig in der Befehlszeile aus?

1

Unter Unix kann ich an der Eingabeaufforderung mehrere Befehle hintereinander ausführen:

# command1; command2; command3

Oder verketten Sie sie, indem Sie den Exit-Status überprüfen:

# command1 && command2 && command3

Ist dasselbe an der Windows XP-Eingabeaufforderung möglich?

Ich muss unter Windows oft mehrere Befehle zum Erstellen von Software ausführen ...

Alexander Farber
quelle

Antworten:

4

Sie haben an der Eingabeaufforderung einige Optionen.

Wie in @barlop bereits erwähnt, wird die &&Verkettung von Befehlen verwendet, solange die vorherige erfolgreich war.

Es gibt auch einen ||Befehl, der nach dem ersten erfolgreichen Befehl nicht mehr ausgeführt wird.

Schließlich können Befehle ()wie folgt in Klammern gruppiert werden:

C:\>(
echo command 1
echo command 2
)

Gruppierung kann auch mit anderen Befehlen, wie verwendet werden ifoder for, so dass für Dinge wie:

C:\>for %i in (*.7z) do @(
md "%~ni"
cd "%~ni"
7za.exe x "%~fi"
cd ..
del "%i"
)
afrazier
quelle
Was du über || gesagt hast Es ist falsch, unabhängig vom Ausgangsstatus zu sein. Das hängt auch vom Exit-Status ab, siehe ntcmds.chm, es heißt "... Cmd.exe führt den ersten Befehl aus und führt dann den zweiten Befehl nur dann aus, wenn der erste Befehl nicht erfolgreich abgeschlossen wurde ...." und probiere echo a | | echo a es wird nur einmal angezeigt.
Barlop
Also scheint Windows endlich bei Unix dabei zu sein? :-)
Alexander Farber
1
erwähnenswert, & ist unabhängig davon, ob der vorherige erfolgreich war.
Barlop
2

In cmd.exe können Sie &Befehle verketten (wie ;in sh ).

echo a & echo b

Die &&und ||Operatoren funktionieren auch.

Grawity
quelle
1

ntcmds.chm erwähnt
unter Konzepten .. "cmd shell overview"

&& Wird nur verwendet, um den Befehl nach && auszuführen, wenn der Befehl vor dem Symbol erfolgreich ist

Also kannst du es tun

C:\>echo a && echo a

hinzugefügt

& ist als Antwort passender als &&

hier von ntcmds.chm

& "Zum Trennen mehrerer Befehle in einer Befehlszeile. Cmd.exe führt den ersten Befehl und dann den zweiten Befehl aus."

&& "Wird nur verwendet, um den Befehl nach && auszuführen, wenn der Befehl vor dem Symbol erfolgreich ist. Cmd.exe führt den ersten Befehl aus und führt den zweiten Befehl nur dann aus, wenn der erste Befehl erfolgreich ausgeführt wurde."

|| Msgstr "Wird nur verwendet, um den Befehl folgend || auszuführen, wenn der Befehl vorhergehend || fehlschlägt. Cmd.exe führt den ersten Befehl aus und führt dann den zweiten Befehl nur aus, wenn der erste Befehl nicht erfolgreich abgeschlossen wurde (erhält einen Fehlercode größer als Null) . " (Es ist ein boolescher Kurzschluss ODER, dh mit dem Ausdruck "A oder B", wobei A und B boolesche Werte von WAHR oder FALSCH sind, muss nur einer wahr sein. Wenn also A wahr ist, geht es nicht so weit wie B weil es nicht muss, um seine Bewertung zu machen)

barlop
quelle
Doh! Die jahrelange Verwendung der Eingabeaufforderung und ich habe noch nie bemerkt, dass sie cmddie Kurzschluss-Boolesche Befehlsverkettung unterstützt. Vielen Dank für den Hinweis ntcmds.chm. (Aww, edlinist "nicht verfügbar unter Windows XP 64-Bit Edition". Poop.)
Synetech
@Synetech: edlinist immer noch ein 16-Bit-MS-DOS-Programm, das im 64-Bit-Modus nicht funktioniert.
Grawity
@grawity, ich weiß, und ich vermisse es (obwohl ehrlich gesagt, ich habe völlig vergessen, wie man es benutzt).
Synetech
@Synetech: Es gibt immer Cygwin ed.
Grawity
@grawity, wie ich schon sagte, ich erinnere mich nicht einmal, wie man Edlin benutzt (und außerdem habe ich eine DOS-Bootdiskette und DOSBox, wenn ich will). Ich bevorzuge Notepad2 in diesen Tagen. Obwohl, wenn 32-Bit-Apps emuliert und auf 64-Bit ausgeführt werden können und NTVDM eine 32-Bit-App ist, die 16-Bit emuliert, frage ich mich, ob NTVDM installiert / zum Laufen gebracht werden kann unter 64-Bit-Windows, sodass 16-Bit-Apps unter 64-Bit möglich sind. Ich würde nicht annehmen, sonst hätten sie es aufgenommen (wenn auch nicht unbedingt; es ist bekannt, dass Entwickler Upgrades / Updates aus geschäftlichen Gründen erzwingen , wenn dies technisch nicht erforderlich ist).
Synetech