Ich möchte eine bestimmte Anwendung (nennen wir sie foo
) über die Befehlszeile ausführen, aber ich möchte nicht, dass sie das Terminal blockiert, Datenmüll aus ihren Ausgabe- oder Fehlerströmen in das Terminal einfügt und dass sie auch dann weiterläuft, wenn ich das Terminal schließe. In Bash kann ich das mit tun (foo &>/dev/null &)
, aber ich weiß nicht, wie ich das in der Windows-Shell machen soll. Kann mir bitte jemand helfen?
Antwort1
Unter Windows gehen Sie hierzu folgendermaßen vor:
start /B foo > NUL 2>&1
Der start
Befehl startet einen getrennten Prozess, eine ähnliche Wirkung wie &
. Die /B
Option verhindert start
das Öffnen eines neuen Terminalfensters, wenn das ausgeführte Programm eine Konsolenanwendung ist (bei GUI-Anwendungen ist dies nicht erforderlich). Das >
hat dieselbe Bedeutung wie in Linux und NUL
ist das Windows-Äquivalent von /dev/null
. Das 2>&1
amEndeleitet stderr zu stdout um, von wo aus alles an geht NUL
.
Antwort2
Es gibt kein direktes Äquivalent.
Wie beschriebenHierstart
, ein Programm auf eine Weise aufzurufen, die den Anrufer nicht blockiert , kann mit dem Befehl unter Verwendung der Option erfolgen /b
. Ich weiß jedoch nicht, wie es in diesem Fall mit der Ausgabeumleitung aussieht. Möglicherweise müssen Sie es in eine Batchdatei einbinden.
Bei > /dev/null
ist es einfach: >NUL
. NUL
ist ein DOS-Gerätename. Der Kurzoperator ist jedoch nicht verfügbar. Bei müssen Sie den manuellen Weg gehen 2>&1
.HierHier noch ein paar weitere Informationen dazu.