Pagina 1 di 1

Il PC si spegne prima che gli script siano completati

Pubblicato: 2 agosto 2017 - 14:23
di Root
Buongiorno,
Utilizzo uno script Python per avviare altri script (spesso file batch o ps1).
Nel mio pacchetto, setup.py termina con l'istruzione:

Codice: Seleziona tutto

os.system("cd C:\dossier0\dossier1 && start setup.bat")
Nella mia mazza lancio comandi wmic (disinstalla) e utilizzo altre funzioni che potrebbero richiedere del tempo per essere completate.

La mia domanda è: come posso impedire a Wapt di spegnere il computer prima che l'elaborazione batch sia completata? Come posso far capire a Wapt che il lavoro non è terminato e che deve attendere prima di spegnersi?

Ho pensato di usare `time.sleep(10)`... ma beh, non è molto... pulito :ugeek: Inoltre, lo script non impiega la stessa quantità di tempo su ogni macchina.

A proposito:
Ho scoperto WAPT durante i miei studi, mentre cercavo un software di distribuzione; lo uso sul mio computer personale e, da quest'anno, anche nell'azienda in cui lavoro! È un prodotto eccellente.
Vorrei anche sapere dove posso segnalare problemi relativi ai miei pacchetti o al mio utilizzo.

MODIFICA: Ops, forum sbagliato

Re: Il PC si spegne prima che gli script finiscano

Pubblicato: 2 agosto 2017 - 17:20
di agauvrit
Argomento spostato.

Riguardo alla tua domanda: https://www.wapt.fr/fr/doc/Frequent-pro ... tput-600-0

Per la tua funzione, potresti scriverla così:

Codice: Seleziona tutto

os.chdir(r"C:\dossier0\dossier1")
run("setup.bat",timeout=1200)
Buon sviluppo del pacchetto!

Re: Il PC si spegne prima che gli script finiscano

Pubblicato: 3 agosto 2017 - 09:13
di Root
agauvrit ha scritto: 2 agosto 2017 - 17:20 Argomento spostato.

Riguardo alla tua domanda: https://www.wapt.fr/fr/doc/Frequent-pro ... tput-600-0

Per la tua funzione, potresti scriverla così:

Codice: Seleziona tutto

os.chdir(r"C:\dossier0\dossier1")
run("setup.bat",timeout=1200)
Buon sviluppo del pacchetto!
Buongiorno,
Grazie per la risposta. Proverò la tua soluzione nel prossimo aggiornamento del mio pacchetto.

Sto pensando di abbandonare l'elaborazione batch e di riscrivere il mio script in Python, ma temo che incontrerò lo stesso problema se terminerò il mio script Python con:
os.popen('prodotto wmic dove name="SoftwareName" chiama disinstallazione')
Buona giornata

Re: Il PC si spegne prima che gli script finiscano

Pubblicato: 4 agosto 2017 - 10:25
di swbsf
CIAO,
Lo uso con successo:

Codice: Seleziona tutto

        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()
La funzione `proc.wait()` funziona bene nel mio caso, poiché riavvia anche la macchina al termine del processo. Ovviamente, devi importare `subprocess`. E sostituire `cmd` con il tuo comando, qualunque esso sia.
La soluzione timeout=xxx è imperfetta; è ideale per.. condizione di gara.

Re: Il PC si spegne prima che gli script finiscano

Pubblicato: 10 agosto 2017 - 11:43
di Root
swbsf ha scritto: 4 agosto 2017 - 10:25 CIAO,
Lo uso con successo:

Codice: Seleziona tutto

        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()
La funzione `proc.wait()` funziona bene nel mio caso, poiché riavvia anche la macchina al termine del processo. Ovviamente, devi importare `subprocess`. E sostituire `cmd` con il tuo comando, qualunque esso sia.
La soluzione timeout=xxx è imperfetta; è ideale per.. condizione di gara.
Grazie, ho provato con proc.wait() e funziona bene