it-swarm.com.de

Windows - Führen Sie den Prozess im Hintergrund aus, nachdem Sie cmd geschlossen haben

Ich habe ein Python-Skript, das ich als Hintergrundprozess unter Windows ausführen möchte.

Ich kann das unter Linux machen mit:

python script.py &

und trennen Sie den Prozess vom Terminal mit:

disown

Unter Windows ist alles, was ich bisher habe, Folgendes:

start /b python script.py

Wenn ich jedoch das CMD-Fenster schließe, wird das Skript nicht mehr ausgeführt. Gibt es einen zusätzlichen Befehl, den ich hier vermisse, um das Skript im Hintergrund laufen zu lassen?

12
multigoodverse

start sollte schon die richtige Richtung sein. /b hängt es jedoch an dieselbe Konsole an. Das Problem besteht nun darin, dass beim Schließen eines Konsolenfensters alle mit dieser Konsole verknüpften Prozesse ebenfalls geschlossen werden.

Sie können entweder start ohne /b verwenden, dann wird es in einer neuen Konsole ausgeführt. Wenn Sie es jedoch im Hintergrund ohne ein Konsolenfenster ausführen möchten, müssen Sie ein VBScript-Tool oder ein Tool eines Drittanbieters verwenden: Führen Sie eine Batch-Datei auf völlig verborgene Weise aus

In diesem Fall wird die Ausgabe stdout/stderr jedoch nicht mehr angezeigt. Sie können es jedoch in eine Datei umleiten, indem Sie es in einen cmd /c your_command > stdout.txt 2> stderr.txt-Aufruf einschließen und diesen mit einer der oben genannten Methoden (VBScript, Drittanbieter-Tool, ...) starten.

Alternativ können Sie auch Ihr eigenes Konsolenfenster vor dem Beenden ausblenden. Ich habe gerade ein kleines einzeiliges Programm geschrieben, das genau das macht (Quellcode ist im Grunde ShowWindow(GetConsoleWindow(), SW_HIDE)): http://share.cherrytree.at/showfile-24286/hide_current_console.exe

Auf diese Weise können Sie start /b verwenden, und wenn Sie Ihre Konsole "schließen" möchten (technisch ausblenden), führen Sie hide_current_console & exit aus, wodurch die Konsole ausgeblendet und anschließend der Prozess cmd.exe (nicht der Python-Prozess) geschlossen wird Zeile, da Sie exit nicht eingeben können, nachdem die Konsole bereits ausgeblendet wurde.

5
CherryDT