Página 1 de 1

La PC se apaga antes de que finalicen los scripts

Publicado: 2 de agosto de 2017 - 14:23
por Root
Buen día,
Utilizo un script de Python para iniciar otros scripts (a menudo, archivos por lotes o ps1).
En mi paquete, setup.py termina con la instrucción:

Código: Seleccionar todo

os.system("cd C:\dossier0\dossier1 && start setup.bat")
En mi bate lanzo comandos wmic (desinstalar) y uso otras funciones que pueden tardar algún tiempo en completarse.

Mi pregunta es: ¿Cómo puedo evitar que Wapt apague el ordenador antes de que finalice el proceso por lotes? ¿Cómo puedo hacer que Wapt entienda que el trabajo no ha terminado y que debe esperar antes de apagarse?

Pensé en usar `time.sleep(10)`... pero bueno, no es muy... limpio :ugeek: Además, el script no tarda el mismo tiempo en cada máquina.

Por cierto:
Descubrí WAPT durante mis estudios mientras buscaba software de implementación; lo uso en mi ordenador y, desde este año, en la empresa donde trabajo. Es un producto excelente.
También me gustaría saber dónde puedo reportar problemas relacionados con mis paquetes o mi uso.

EDITAR: Ups, foro equivocado

Re: La PC se apaga antes de que finalicen los scripts

Publicado: 2 de agosto de 2017 - 17:20
por agauvrit
Tema movido.

Respecto a tu pregunta: https://www.wapt.fr/fr/doc/Proceso frecuente ... tput-600-0

Para tu función podrías escribirla así:

Código: Seleccionar todo

os.chdir(r"C:\dossier0\dossier1")
run("setup.bat",timeout=1200)
¡Buen desarrollo de paquete!

Re: La PC se apaga antes de que finalicen los scripts

Publicado: 3 de agosto de 2017 - 09:13
por Root
agauvrit escribió: 2 de agosto de 2017 - 17:20 Tema movido.

Respecto a tu pregunta: https://www.wapt.fr/fr/doc/Proceso frecuente ... tput-600-0

Para tu función podrías escribirla así:

Código: Seleccionar todo

os.chdir(r"C:\dossier0\dossier1")
run("setup.bat",timeout=1200)
¡Buen desarrollo de paquete!
Buen día,
Gracias por la respuesta. Probaré tu solución en la próxima actualización de mi paquete.

Estoy considerando abandonar el procesamiento por lotes y reescribir mi script en Python, pero me temo que encontraré el mismo problema si finalizo mi script de Python con:
os.popen('wmic producto donde nombre="SoftwareName" llamar desinstalar')
Buen día

Re: La PC se apaga antes de que finalicen los scripts

Publicado: 4 de agosto de 2017 - 10:25
por swbsf
Hola,
Lo uso con éxito:

Código: Seleccionar todo

        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 función `proc.wait()` funciona bien en mi caso, ya que también reinicia la máquina al finalizar el proceso. Por supuesto, debes importar `subprocess` y reemplazar `cmd` con tu comando, sea cual sea.
La solución timeout=xxx es defectuosa; es ideal para.. condición de carrera.

Re: La PC se apaga antes de que finalicen los scripts

Publicado: 10 de agosto de 2017 - 11:43
por Root
swbsf escribió: 4 de agosto de 2017 - 10:25 Hola,
Lo uso con éxito:

Código: Seleccionar todo

        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 función `proc.wait()` funciona bien en mi caso, ya que también reinicia la máquina al finalizar el proceso. Por supuesto, debes importar `subprocess` y reemplazar `cmd` con tu comando, sea cual sea.
La solución timeout=xxx es defectuosa; es ideal para.. condición de carrera.
Gracias, lo probé con proc.wait() y funciona bien