windows länge - Wie führe ich zwei Befehle in einer Zeile in Windows CMD aus?




8 Answers

So auf allen Microsoft-Betriebssystemen seit 2000, und immer noch gut heute:

dir & echo foo

Wenn der zweite Befehl nur ausgeführt werden soll, wenn der erste erfolgreich beendet wurde:

dir && echo foo

Die einzelne Ampersand (&) -Syntax zum Ausführen mehrerer Befehle in einer Zeile geht auf Windows XP, Windows 2000 und einige frühere NT-Versionen zurück. (Mindestens 4.0, nach einem Kommentar hier.)

Es gibt noch einige andere Punkte, die Sie auf dieser Seite finden.

Historische Daten folgen für diejenigen, die es lehrreich finden.

Davor war die Syntax && nur ein Merkmal der Shell-Ersetzung von 4DOS, bevor diese Funktion dem Microsoft-Befehlsinterpreter hinzugefügt wurde.

In Windows 95, 98 und ME würden Sie stattdessen das Pipe-Zeichen verwenden:

dir | echo foo

In MS-DOS 5.0 und höher, über einige frühere Windows- und NT-Versionen des Befehlsinterpreters, war das (undokumentierte) Befehlstrennzeichen das Zeichen 20 (Strg + T), das ich hier mit ^ T darstellen werde.

dir ^T echo foo
für meta

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?




& ist das Bash-Äquivalent für ; (run commands) und && ist das Bash-Äquivalent von && (nur Befehle ausführen, wenn das vorherige keinen Fehler verursacht hat).




Wenn Sie eine Cmd-Verknüpfung erstellen möchten (zum Beispiel auf Ihrem Desktop), fügen Sie den Parameter / k hinzu (/ k bedeutet halten, / c schließt das Fenster):

cmd /k echo hello && cd c:\ && cd Windows



Also, ich habe versucht, die spezifische Aufgabe der RegAsm (Register Assembly) aus einem Kontextmenü zu aktivieren. Das Problem, das ich hatte, war, dass das Ergebnis aufleuchten und verschwinden würde, bevor ich es lesen konnte. Also habe ich versucht, zu Pause , was nicht funktioniert, wenn der Befehl fehlschlägt (wie hier erwähnt Pause-Befehl nicht in .bat-Skript funktioniert und hier Batch-Datei Befehl PAUSE nicht funktioniert ). Also habe ich cmd /k ausprobiert, aber das lässt das Fenster offen für weitere Befehle (ich möchte nur das Ergebnis lesen). Also fügte ich eine pause hinzu, gefolgt vom exit der Kette, was zu folgendem führte:

cmd /k C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe "%1" /codebase \"%1\" & pause & exit

Das funktioniert wie ein Zauber - RegAsm läuft auf der Datei und zeigt ihre Ergebnisse, dann wird eine Eingabeaufforderung "Drücken Sie eine beliebige Taste, um fortzufahren ..." angezeigt, dann wird das Eingabeaufforderungsfenster geschlossen, wenn eine Taste gedrückt wird.

PS Für andere, die interessiert sein könnten, können Sie die folgenden REG-Dateieinträge verwenden, um DLL-Dateien eine dllfile-Zuordnung hinzuzufügen und dann eine RegAsm-Befehlserweiterung (beachte die quittierten Anführungszeichen und Backslashes):

[HKEY_CLASSES_ROOT\.dll]
"Content Type"="application/x-msdownload"
@="dllfile"

[HKEY_CLASSES_ROOT\dllfile]
@="Application Extension"

[HKEY_CLASSES_ROOT\dllfile\Shell\RegAsm]
@="Register Assembly"

[HKEY_CLASSES_ROOT\dllfile\Shell\RegAsm\command]
@="cmd /k C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\regasm.exe \"%1\" /codebase \"%1\" & pause & exit"

Jetzt habe ich ein nettes Kontextmenü, um eine Baugruppe zu registrieren.




cmd /c ipconfig /all & Output.txt

Dieser Befehl führt den Befehl aus und Output.txt Datei Output.txt in einem einzigen Befehl




Ich versuche, zwei Pings im selben Fenster zu haben, und es ist ein serieller Befehl in derselben Zeile. Nachdem Sie den ersten Befehl ausgeführt haben, führen Sie den zweiten Befehl aus.

Die Lösung sollte mit start /b an einer Windows 7-Eingabeaufforderung kombiniert werden.

Starten Sie wie gewohnt ohne /b und starten Sie sie in einem separaten Fenster.

Der Befehl zum Starten in derselben Zeile lautet:

start /b command1 parameters & command2 parameters

In jedem Fall, wenn Sie die Ausgabe analysieren möchten, empfehle ich nicht, dies zu verwenden. Ich habe bemerkt, dass die Ausgabe zwischen den Ausgaben der Befehle verschlüsselt ist.




Es ist einfach: Unterscheiden Sie sie einfach mit && Zeichen. Beispiel:

echo Hello World && echo GoodBye World

Goodbye World wird nach Hello World gedruckt.




Ein weiteres Beispiel: Zum Beispiel, wenn wir das gulp Build-System anstelle von verwenden

gulp - Standard> Build

gulp build - Build Build-Ordner

gulp watch - Dateiüberwachung starten

gulp dist - bilde dist-folder

Wir können das mit einer Linie machen:

cd c:\xampp\htdocs\project & gulp & gulp watch



Related

windows batch-file command-line cmd