Mehrzeiliger &&-Kombinatoroperator zur Befehlsverkettung in Batchdateien

Mehrzeiliger &&-Kombinatoroperator zur Befehlsverkettung in Batchdateien

Ich verstehedass dieser Operator in Windows (und möglicherweise auch in Linux?) verwendet wird, um mehrere Befehle in einer Zeile zu verketten/kombinieren. Befehle werden nacheinander ausgeführt, solange der vorhergehende erfolgreich abgeschlossen wurde (Exitcode 0).

Ich verstehe jedoch nicht, ob es in Batchdateien verwendet werden kann, in denen Sie Befehle nacheinander angeben, einen Befehl pro Zeile. Wie erzielen Sie in diesem Fall denselben Effekt?Wie teilt man cmd1 && cmd2 && cmd3in mehrere Zeilen auf?? Wie kündigen Sie

cmd1
cmd2
cmd3

sobald der erste Befehl fehlschlägt?

Außerdem würde ich gerne den Namen des Betreibers wissen, um derartige Fragen später selbst beantworten zu können.

Antwort1

cmd1 && cmd2 && cmd3

kann in mehreren Zeilen geschrieben werden als

cmd1
if not errorlevel 1 cmd2
if not errorlevel 1 cmd3

wobei die Ausführung jedes Befehls vom Ergebnis des vorherigen abhängt

Antwort2

Unter GNU/Linux kann ich den Befehl cmd1 && cmd2 && cmd3(z. B. zur besseren Lesbarkeit) in einer Skriptdatei wie folgt auf mehrere Zeilen aufteilen:

cmd1 &&
cmd2 &&
cmd3

Antwort3

Der Unterschied zwischen ihnen ist:

cmd1
cmd2
cmd3

löst jeden Befehl einzeln aus und ermöglicht die Beendigung des Batch-Jobs, wenn Sie Ctrl+ drücken c, bevor einer abgeschlossen ist.

Wohingegen

cmd1 && cmd2 && cmd3

führt die Befehle nacheinander aus, jedoch ohne das Skript anzusehen/auf einmal.

Ein weiteres Beispiel:

Nehmen Sie das erste Beispiel: Wenn Sie das Skript bearbeiten, während cmd1 ausgeführt wird, und cmd2 in cmd3 ändern, wird cmd3 geladen, wenn cmd1 fertig ist.

Wenn ich das unter Linux mache, ifdown eth0verliere ich meine SSH-Sitzung, daher ifdown eth0 && ifup eth0verkette ich stattdessen die Befehle.

Wenn Sie hinsichtlich Fehlern etwas unternehmen möchten, sollten Sie sich if-Anweisungen und Schalter sowie Rückgabecodes und Fehlerebenen ansehen.Linky.

Antwort4

Bei Batchdateien müssen Sie nach jeder bedingten Operation && (oder ||) ein ^-Trennzeichen hinzufügen. Beispiel:

echo 1 && ^
echo 2 && ^
copy >null && ^
echo 4

verwandte Informationen