Seite 1 von 1

Der PC schaltet sich ab, bevor die Skripte beendet sind

Veröffentlicht: 2. August 2017 - 14:23 Uhr
von Root
Guten Morgen,
Ich verwende ein Python-Skript, um andere Skripte (oft Batch- oder PS1-Dateien) zu starten.
In meinem Paket endet setup.py mit folgender Anweisung:

Code: Alle auswählen

os.system("cd C:\dossier0\dossier1 && start setup.bat")
In meinem Bat-Menü starte ich Befehle wmic (Deinstallation) und ich nutze andere Funktionen, deren Ausführung einige Zeit in Anspruch nehmen kann.

Meine Frage lautet: Wie kann ich verhindern, dass Wapt den Computer herunterfährt, bevor der Batch-Prozess abgeschlossen ist? Wie kann ich Wapt mitteilen, dass der Auftrag noch nicht beendet ist und dass es warten muss, bevor es herunterfährt?

Ich habe überlegt, `time.sleep(10)` zu verwenden... aber nun ja, das ist nicht sehr... elegant :ugeek: Darüber hinaus benötigt das Skript auf den verschiedenen Rechnern unterschiedlich viel Zeit.

Übrigens:
Ich entdeckte WAPT während meines Studiums bei der Suche nach Deployment-Software; ich nutze es auf meinem privaten Computer und seit diesem Jahr auch in der Firma, in der ich arbeite! Es ist ein hervorragendes Produkt.
Ich möchte außerdem wissen, wo ich Probleme im Zusammenhang mit meinen Paketen oder meiner Nutzung melden kann.

Nachtrag: Ups, falsches Forum

Betreff: PC schaltet sich vor Abschluss der Skripte ab

Veröffentlicht: 2. August 2017 - 17:20 Uhr
von agauvrit
Thema verschoben.

Zu Ihrer Frage: https://www.wapt.fr/fr/doc/Frequent-pro ... tput-600-0

Ihre Funktion könnten Sie folgendermaßen schreiben:

Code: Alle auswählen

os.chdir(r"C:\dossier0\dossier1")
run("setup.bat",timeout=1200)
Gute Verpackungsentwicklung!

Betreff: PC schaltet sich vor Abschluss der Skripte ab

Veröffentlicht: 3. August 2017 - 09:13 Uhr
von Root
agauvrit schrieb: 2. August 2017 - 17:20 Uhr Thema verschoben.

Zu Ihrer Frage: https://www.wapt.fr/fr/doc/Frequent-pro ... tput-600-0

Ihre Funktion könnten Sie folgendermaßen schreiben:

Code: Alle auswählen

os.chdir(r"C:\dossier0\dossier1")
run("setup.bat",timeout=1200)
Gute Verpackungsentwicklung!
Guten Morgen,
Danke für die Antwort. Ich werde Ihre Lösung im nächsten Update meines Pakets ausprobieren.

Ich überlege, die Stapelverarbeitung aufzugeben und mein Skript in Python neu zu schreiben, aber ich befürchte, dass ich auf dasselbe Problem stoßen werde, wenn ich mein Python-Skript mit Folgendem beende:
os.popen('wmic product where name="SoftwareName" call uninstall')
Guten Tag

Betreff: PC schaltet sich vor Abschluss der Skripte ab

Veröffentlicht: 4. August 2017 - 10:25 Uhr
von swbsf
Hallo,
Ich nutze es erfolgreich:

Code: Alle auswählen

        cmd="c:\\Windows\\System32\\WindowsPowershell\\v1.0\\powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File c:\\tmp\\Win10.ps1"
        proc = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE)
        proc.wait()
Die Funktion `proc.wait()` funktioniert in meinem Fall einwandfrei, da sie den Rechner am Ende des Prozesses neu startet. Sie müssen natürlich `subprocess` importieren und `cmd` durch Ihren Befehl ersetzen.
Die Lösung timeout=xxx ist fehlerhaft; sie eignet sich ideal für.. Rennbedingungen.

Betreff: PC schaltet sich vor Abschluss der Skripte ab

Veröffentlicht: 10. August 2017 - 11:43 Uhr
von Root
swbsf schrieb: 4. August 2017 - 10:25 Uhr Hallo,
Ich nutze es erfolgreich:

Code: Alle auswählen

        cmd="c:\\Windows\\System32\\WindowsPowershell\\v1.0\\powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File c:\\tmp\\Win10.ps1"
        proc = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE)
        proc.wait()
Die Funktion `proc.wait()` funktioniert in meinem Fall einwandfrei, da sie den Rechner am Ende des Prozesses neu startet. Sie müssen natürlich `subprocess` importieren und `cmd` durch Ihren Befehl ersetzen.
Die Lösung timeout=xxx ist fehlerhaft; sie eignet sich ideal für.. Rennbedingungen.
Danke, ich habe es mit proc.wait() ausprobiert und es funktioniert einwandfrei