%20in%20Verkn%C3%BCpfung%2FLink%20unter%20Windows%207%3F.png)
Ich möchte ein Python 3-Skript beim Systemstart mithilfe einer Verknüpfung/eines Links (.lnk) im Autostart im Hintergrund ausführen.
Pythons pythonw.exe wird mit meinem Skript nur dann als fensterloser Prozess ausgeführt, wenn stdout und stderr irgendwohin weitergeleitet werden, z. B. pythonw script.pyw >nul 2>&1
. Dies funktioniert von CMD aus.
Funktioniert nicht, wenn es als Windows-Linkziel angegeben wird. Dies wird automatisch zu erweitert c:\Python34\pythonw.exe script.pyw >nul 2>&1
. Doppelte Anführungszeichen um den Befehl werden automatisch entfernt. Der Prozess pythonw.exe wird beim Ausführen des Links nur kurz ausgeführt.
Antwort1
Ich habe es zum Laufen gebracht
C:\Windows\system32\CMD.exe /C start /B pythonw.exe script.pyw >nul 2>&1
Beim Ausführen wird kurz das CMD-Fenster angezeigt. Es scheint, dass die CMD-Pipe-Operatoren nicht vom Windows-Link-„Mechanismus“ interpretiert, sondern als Argumente/Optionen an das Programm gesendet werden. Dies wird gelöst, indem CMD tatsächlich mit /C ausgeführt wird, um den START-Befehl zu übergeben, der pythonw als separaten Prozess ausführt.
Weiterführende Literatur:
- http://ss64.com/nt/cmd.html– Starten Sie eine neue CMD-Shell und führen Sie (optional) einen Befehl/ein ausführbares Programm aus.
- http://ss64.com/nt/start.html- Starten Sie ein Programm, einen Befehl oder ein Batch-Skript (wird in einem neuen Fenster geöffnet.)
- http://ss64.com/nt/syntax-redirection.html