Wie führe ich zwei Befehle in einer Zeile in Windows CMD aus?



Answers

Ein Zitat aus der Dokumentation:

Verwenden mehrerer Befehle und bedingter Verarbeitungssymbole

Sie können mehrere Befehle über eine einzige Befehlszeile oder ein einzelnes Skript mit bedingten Verarbeitungssymbolen ausführen. Wenn Sie mehrere Befehle mit bedingten Verarbeitungssymbolen ausführen, wirken die Befehle rechts vom Symbol für bedingte Verarbeitung basierend auf den Ergebnissen des Befehls links vom bedingten Verarbeitungssymbol.

Beispielsweise möchten Sie möglicherweise nur einen Befehl ausführen, wenn der vorherige Befehl fehlschlägt. Oder Sie möchten einen Befehl nur ausführen, wenn der vorherige Befehl erfolgreich ausgeführt wurde.

Sie können die in der folgenden Tabelle aufgeführten Sonderzeichen verwenden, um mehrere Befehle zu übergeben.

  • & [...]
    command1 & command2
    Verwenden Sie diese Option, um mehrere Befehle in einer Befehlszeile zu trennen. Cmd.exe führt den ersten Befehl und dann den zweiten Befehl aus.

  • && [...]
    command1 && command2
    Verwenden Sie diesen Befehl, um den Befehl nach && nur dann 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.

  • || [...]
    command1 || command2
    Verwenden Sie, um den Befehl nach || auszuführen nur wenn der Befehl vor || schlägt fehl. 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 (empfängt einen Fehlercode größer als Null).

  • ( ) [...]
    (command1 & command2)
    Verwenden Sie diese Option zum Gruppieren oder Verschachteln mehrerer Befehle.

  • ; or ,
    command1 parameter1;parameter2
    Verwenden Sie, um Befehlsparameter zu trennen.

Question

Ich möchte zwei Befehle in einer Windows CMD-Konsole ausführen.

Unter Linux würde ich das so machen: touch thisfile ; ls -lstrh diese touch thisfile ; ls -lstrh touch thisfile ; ls -lstrh .

Wie läuft es unter Windows?




Mit call können Sie das Problem der zu früh evaluierten Umgebungsvariablen - z

set A=Hello & call echo %A%



Nun, Sie haben zwei Möglichkeiten: Piping oder einfach & :

DIR /S & START FILE.TXT

Oder,

tasklist | find "notepad.exe"

Piping ( | ) ist mehr dazu da, die Ausgabe eines Befehls zu übernehmen und in einen anderen zu setzen. Und ( & ) sagt nur das und das.




Wenn Sie versuchen, Variablen in einer Zeile zu verwenden oder zu manipulieren, achten Sie auf deren Inhalt! ZB eine Variable wie die folgende

PATH=C:\Program Files (x86)\somewhere;"C:\Company\Cool Tool";%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;

kann zu vielen nicht handhabbaren Problemen führen, wenn Sie es als %PATH%

  1. Die abschließenden Klammern beenden Ihre Gruppenaussage
  2. Die doppelten Anführungszeichen erlauben es nicht, %PATH% zu verwenden, um das Klammernproblem zu behandeln
  3. Und was wird eine referenzierte Variable wie %USERPROFILE% enthalten?



Um zwei Befehle gleichzeitig auszuführen, müssen Sie ein & -Zeichen zwischen beiden Befehlen einfügen. Wie so:

color 0a & start chrome.exe

Prost!




Eine Anzahl von Verarbeitungssymbolen kann verwendet werden, wenn mehrere Befehle in derselben Zeile ausgeführt werden, und kann in einigen Fällen zur Verarbeitungsumleitung führen, in anderen Fällen die Ausgabe ändern oder einfach fehlschlagen. Ein wichtiger Fall ist es, auf dieselbe Zeile Befehle zu setzen, die Variablen manipulieren.

@echo off
setlocal enabledelayedexpansion
set count=0
set "count=1" & echo %count% !count!

0 1

Wie Sie im obigen Beispiel sehen, wenn Befehle, die Variablen verwenden, in derselben Zeile platziert sind, müssen Sie die verzögerte Erweiterung verwenden, um Ihre Variablenwerte zu aktualisieren. Wenn Ihre Variable indiziert ist, verwenden Sie den Befehl CALL mit %%-Modifikatoren, um ihren Wert in derselben Zeile zu aktualisieren:

set "i=5" & set "arg!i!=MyFile!i!" & call echo path!i!=%temp%\%%arg!i!%%

path5=C:\Users\UserName\AppData\Local\Temp\MyFile5



Nein, cd / && tree && echo %time% . Die Echozeit liegt bei der Ausführung des ersten Befehls.

Die Rohrleitung hat ein Problem, aber es ist nicht kritisch, solange die Leute wissen, wie es funktioniert.




Sie können & nacheinander Befehle ausführen. Beispiel: c:\dir & vim myFile.txt




Links