![Mehrzeiliger &&-Kombinatoroperator zur Befehlsverkettung in Batchdateien](https://rvso.com/image/1444055/Mehrzeiliger%20%26%26-Kombinatoroperator%20zur%20Befehlsverkettung%20in%20Batchdateien.png)
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 && cmd3
in 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 eth0
verliere ich meine SSH-Sitzung, daher ifdown eth0 && ifup eth0
verkette 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