cmd command mit python silent ausführen?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Ja, es gibt mehrere Möglichkeiten, einen Windows-Befehl in Python im Hintergrund auszuführen, ohne dass das Befehlsfenster sichtbar wird. Eine Möglichkeit besteht darin, die

subprocess

-Bibliothek zu verwenden, die in Python enthalten ist. Sie können die

subprocess.Popen()

-Funktion verwenden, um einen Befehl im Hintergrund auszuführen.

Hier ist ein Beispiel:

import subprocess
subprocess.Popen("befehl", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

In diesem Beispiel wird der Befehl "befehl" im Hintergrund ausgeführt und das Befehlsfenster wird nicht angezeigt.

Eine andere Möglichkeit besteht darin, das

os.system()

-Modul zu verwenden und das Ausgabefenster zu unterdrücken, indem Sie

start /b

vor den Befehl setzen.

import os
os.system("start /b befehl")

Das Befehlsfenster wird hier nicht angezeigt und der Befehl wird im Hintergrund ausgeführt.

Wichtig zu beachten ist das, wenn Sie das Programm mit Pyinstaller kompilieren, das einige Einstellungen beachtet werden müssen, damit das erwartete Ergebnis erreicht wird, wie z.B. das Verwenden der

--noconsole

-Option, um das Konsolenfenster zu unterdrücken.

Es gibt auch andere Möglichkeiten wie

ctypes

oder

win32api

welche auch verwendet werden können. Es hängt davon ab, welche Funktionalität und welche Anforderungen Sie für Ihr Programm haben.

Hallilo 
Fragesteller
 17.01.2023, 23:22

VIELEN dank!

1
ralphdieter  18.01.2023, 00:25

Darf ich raten? Du hast diese Antwort von ChatGPT kopiert, ohne selbst auch nur ein Wort davon zu verstehen.

import subprocess
subprocess.Popen("befehl", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

shell=True macht die Sache nur unnötig kompliziert und unsicher. Und subprocess.PIPE ist nur nötig, wenn man die Ein- und Ausgabe kontrollieren will.

Und seit Python 3.5 wird subprocess.run() empfohlen, solange man keine spezielle Funktionalität von Popen braucht. Also einfach:

subprocess.run( "befehl" )
0