![¿Cómo evitar que las tareas programadas se ejecuten tan pronto como se activa la computadora?](https://rvso.com/image/1415080/%C2%BFC%C3%B3mo%20evitar%20que%20las%20tareas%20programadas%20se%20ejecuten%20tan%20pronto%20como%20se%20activa%20la%20computadora%3F.png)
Ejemplo: tengo una tarea programada para las 6 am todos los días (solo si estoy conectado). Si mi computadora duerme/hiberna toda la noche hasta las 9 a. m., al despertar la tarea se ejecutará aunque no haya cumplido su horario de las 6 a. m. No quiero que eso suceda porque es importante que la tarea se ejecute.soloa las 6 am.
Pensé que desmarcar la configuración "Ejecutar la tarea tan pronto como sea posible después de perderse un inicio programado" evitaría esto, pero no es así. ¿Hay alguna otra configuración que deba probar para que la tarea se ejecute solo si la computadora está encendida a la hora programada (y esperará hasta la siguiente hora programada si no la alcanza)?
Un ejemplo de mi configuración:
Respuesta1
Encontré una solución: realice su tarea iniciando su .bat
script, que ejecutará el comando si descubre que la computadora no estaba inactiva. El script que uso es:
@echo off
for /f "delims=" %%t in ('time /t') do if "%%t"=="%1" %~2
Este script toma dos parámetros: el primero es la hora en la que se pretende llamar al comando y el segundo es el comando en sí, entre comillas, como script.bat 21:40 "echo x"
.
Explicación
A diferencia de Bash, en Batch es imposible almacenar directamente la salida del comando en una variable, pero se puedeiterar sobre su salida línea tras línea. Eso es lo que hace mi segunda línea. Debido a que time /t
la salida de '
es de una sola línea, solo hay una iteración, en la que el script inicia el comando (pasado como segundo parámetro) si el script se llamó cuando usted quería que se llamara; esta condición no se cumplirá cuando se retrase la ejecución del script.
Lo uso %~2
en lugar de %2
, porque %~2
descarta las comillas alrededor del comando,
de modo que el paso "echo x"
se ejecutará echo
con el argumento x
, imprimiendo x
,
en lugar de invocar el programa echo x
sin argumentos.
Desventajas
Iniciar la tarea a pedido no hará nada, será mejor que desmarques el campoPermitir que la tarea se ejecute bajo demandaen elAjustespestaña, no debe confundirse por eso,
Modificar la hora de ejecución de la tarea requiere modificar los argumentos para mantener la tarea funcionando,
time /t
La producción depende de la configuración regional.
Respuesta2
Para ejecutar una tarea programada cuando la computadora está inactiva, abra "Espere a que esté inactivo durante:" y tal vez marca de verificación "detenerse si la computadora deja de estar inactiva".
- Haga clic derecho en la tarea que desea ejecutar cuando la computadora esté inactiva y luego haga clic en Propiedades.
- En la pestaña Condiciones, en Tiempo de inactividad, seleccione la casilla Iniciar la tarea solo si la computadora ha estado inactiva durante al menos.
- Ingrese el período de tiempo (en minutos) durante el cual la computadora debe estar inactiva antes de que se ejecute la tarea.
NOTA: También puede especificar que se detenga cualquier tarea si la computadora está en uso seleccionando la casilla Detener la tarea si la computadora deja de estar inactiva.
Para entender el tiempo de inactividad sigue estoenlace...
Respuesta3
Dado que deja su computadora en suspensión/hibernación, técnicamente todavía está "conectado" (simplemente lejos). Entonces, como alternativa, puede configurar la tarea para "activar la computadora para ejecutar esta tarea" en Condiciones, y siempre se ejecutará a las 6 a.m. (a menos que haya querido decir que necesita estar en la consola cuando se ejecuta la tarea)