¿Cómo ejecutar un script python a una determinada hora y fecha en Windows?

publicado por: Anonymous

Necesito ejecutar un script todo los días a las 10:00 en un sistema bajo Windows. ¿Cómo podria hacerlo?. Un ejemplo simple seria que a las 10 se ejecute el script y diga ‘hola mundo’, o quizás, que el script se ejecute desde el principio pero que cuando llegue las 10:00 lanze ‘hola mundo’.

solución

En Windows que es el SO que usas puedes programar la ejecución periódica del script usando el Programador de Tareas de forma gráfica. Se puede hacer mediante la consola, powershell, archivo bat, etc también si lo deseas.

No se que versión de Windows usas, el ejemplo está probado en Windows 10. Una vez abierto el programador de Tareas (puedes abrirlo de forma rápida pulsando Tecla Windows + r y introduciendo taskschd.msc) un ejemplo básico sería:

  • Nos vamos al menu Acción y seleccionamos Crear tarea...:

    introducir la descripción de la imagen aquí

  • En la subventana que aparece en la pestaña General introducimos el nombre de la tarea (es obligatorio y no puede haber dos tareas con el mismo nombre):

    introducir la descripción de la imagen aquí

  • En la pestaña Desencadenadores hacemos click en Nuevo, no aparecerá una nueva subventana donde elegimos a que hora, fecha, periodo, etc se debe ejecutar la tarea, una vez seleccionada damos click en Aceptar:

    introducir la descripción de la imagen aquí

  • Ahora nos vamos a la pestaña Acciones y hacemos click en Nueva.... En la ventana que se abre podemos inttroducir la ruta del script a ejecutar directamente. Esto funcionará si tenemos bién configuradas las variables de entorno (si al hacer doble click sobre un archivo .py se ejecuta direectamente en la CMD). De no ser así o querer usar otro intérprete podemos poner la ruta al intérprete seguida de un espacio y la ruta del script.

    introducir la descripción de la imagen aquí

  • Lo anterior es lo básico, se pueden configurar muchas más cosas como que hacer si no se pudo completar la tarea programada(equipo apagado por ejemplo). Puedes ir mirando por las distintas pestañas y ver las opciones que hay. Una vez que todo esté correcto le damos a ceptar y terminamos.

Te dejo un enlace a la ayuda de Microsoft donde se explica esto además de como hacerlo via terminal por si lo prefieres así.

Si lo que quieres es que un script en ejecución al llegar una determinada hora ejecute algún fragmento de código la opción es correr un hilo que compruebe la hora del sistema y lanze esa función cuando se cumpla la condición. Para minimizar la carga del sistema se usa un timer para que no comprube la hora constantemente sino que lo haga cada x segundos, minutos u horas dependiendo de la precisón requerida. Como te comenté en un comentario anterior te dejo el enlace a una pregunta similar donde respondo usando esta idea:

Ejecutar fragmento de código a una hora/fecha determinada en un script en ejecución

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *