Windows: Programar apagado o reinicio automático

En ocasiones, nos puede interesar programar un apagado o un reinicio automático de un equipo con Windows, ya sea Windows cliente (Windows XP, Vista, 7, 8, 10) o Windows Server (2003, 2008, 2008R2, 2012, 2012R2, 2016).

Para programar apagado o reinicio automático necesitaremos dos herramientas:

- Comando shutdown.

- Programador de tareas (taskschd.msc).

Además disponemos del comando schtasks, que nos permite crear la tarea desde linea de comandos y después es posible verla desde el programador del tareas.

La ventaja de utilizar el comando schtasks para crear la tarea programada es que podemos desplegar la configuración en múltiples equipos mediante un script y una GPO (directiva de grupo).

1) Programar apagado o reinicio automático: Comando shutdown:


Debemos tener en cuenta los siguientes parámetros del comando shutdown:

/s      Apaga el equipo.
/r      Apaga y reinicia el equipo.

/f      Fuerza el cierre de las aplicaciones sin advertir previamente a los usuarios.
/t xxx  Establece el período de tiempo de espera antes del cierre en xxx segundos.
/c "xxx" Muestra el comentario especificado: xxx

Podemos obtener la referencia completa de todos los parámetros del comando shutdown, ejecutando: shutdown /?

Ejemplos:

Para reiniciar el equipo de forma inmediata:

shutdown /r /f /t 0 /c "Reinicio"

Para apagar el equipo de forma inmediata:

shutdown /s /f /t 0 /c "Apago"

2) Programar apagado o reinicio automático: Programador de tareas (taskschd.msc)


Ejecutamos taskschd.msc o bien control schedtasks para cargar el interfaz gráfico del programador de tareas.

También podemos crear la tarea utilizando el comando schtasks.

Ejemplo:

schtasks /create /ru system /rl highest /sc DAILY /tn Reinicio /tr "shutdown /r /f /t 0 /c "Reinicio"" /st 22:30 /F

Explicación de los parámetros:

/create : Crea la tarea programada.

/ru system: Ejecutar la tarea como el usuario SYSTEM.

/rl highest: Ejecutar con los privilegios más altos.

/sc DAILY: Ejecutar la tarea cada día.

/tn Reinicio: Nombre de la tarea.

/tr "shutdown /r /f /t 0 /c "Reinicio"": El comando a ejecutar cada vez es: "shutdown /r /f /t 0 /c "Reinicio"", que reiniciará el equipo cerrando todas las aplicaciones abiertas, sin tiempo de espera.

/st 22:30: La tarea se ejecutará a las 22:30.

/F: En caso de que exista la tarea, se sobreescribirá la configuración.

Si ejecutamos este comando desde una ventana de CMD como administrador y luego ejecutamos taskschd.msc, podemos ver la configuración de la tarea:

Pestaña "General":

Windows: Programar apagado o reinicio automático

Pestaña "Desencadenadores":

Windows: Programar apagado o reinicio automático

Pestaña "Acciones":

Windows: Programar apagado o reinicio automático

También podemos programar un apagado o un reinicio automático desde PowerShell, tenéis el detalle en este post:

Windows: Programar apagado o reinicio PowerShell (SYSADMIT.com)

22 comentarios:

  1. Saludos y enhorabuena por tu trabajo!

    Quisiera saber si me puedes ayudar con un problemilla que tengo.

    Me gustaria que mi ordenador se reiniciase cada vez que se cierra una aplicacion que ejecuto en batch (.bat)

    Esta aplicacion se inicia cada vez que inicio Windows (Windows 10 home 64)

    Espero que puedas ayudarme. Gracias!

    Saludos!

    ResponderEliminar
    Respuestas
    1. Hola Jose,

      Mira este BAT, igual te ayuda.

      La idea es un bucle que busca si hay determinado proceso, en este caso: winword.exe.

      En caso de que el proceso exista, espera 5 segundos y vuelve a verificar. En caso de que no exista, apaga el equipo.

      Un saludo,

      Xavi.


      @echo off

      :Bucle
      tasklist /fi "imagename eq winword.exe" | find /i "winword.exe"
      if errorlevel 1 goto apagar

      echo Winword esta funcionando
      goto OK

      :apagar
      shutdown -s -f -t 0

      :OK
      REM Espera 6 segundos
      ping 127.0.0.1 -n 2 -w 5000
      goto Bucle

      Eliminar
  2. muchas gracias!

    lo probaré y te comento.

    Saludos

    ResponderEliminar
  3. En vez de apagar el equipo, es posible que reinicie el .bat que tenia ejecutando y que se cerro?

    ResponderEliminar
    Respuestas
    1. Hola,

      No acabo de entender la pregunta, pero si te fijas en el BAT, tienes el comando shutdown que puedes substituirlo por lo que quieras, por ejemplo una llamada a otro bat.

      Un saludo,

      Xavi.

      Eliminar
  4. Estoy volviéndome loco para hacer algo tal cual esto, pero que el desencadenante, en vez de horario, sea la desconexión de una unidad usb.

    Si unidad D se desconecta, then reboot.

    ¿ Socorro ?

    ResponderEliminar
    Respuestas
    1. Hola,

      Por defecto no existe la opción que comentas. Puedes tratar de buscar o construir u script que lo haga.

      Un saludo,

      Xavi.

      Eliminar
  5. disculpa la molestia bro

    al realizar el reinicio se encenderá el servidor automáticamente a una hora o sera después de haberse apagado

    ResponderEliminar
    Respuestas
    1. Hola,

      Si se ha apagado, la tarea programada no puede ejecutarse.

      El reinicio se producirá si Windows con la tarea programada esta cargado.

      Un saludo,

      Xavi.

      Eliminar
  6. como se puede hacer esto para que lo haga solo un día específico de la semana ?

    ResponderEliminar
    Respuestas
    1. Hola Osniel,

      Si ejecutas:

      schtasks /create /?

      Veras multitud de ejemplos y parámetros del comando schtasks para crear tareas.

      Creo que este fragmento de la ayuda es el que te interesa:

      Modificadores: valores válidos para el modificador /MO por tipo de programación:

      MINUTE: 1 - 1439 minutos.
      HOURLY: 1 - 23 horas.
      DAILY: 1 - 365 días.
      WEEKLY: semanas 1 - 52.
      ONCE: sin modificadores.
      ONSTART: sin modificadores.
      ONLOGON: sin modificadores.
      ONIDLE: sin modificadores.
      MONTHLY: 1 - 12, o
      FIRST, SECOND, THIRD, FOURTH, LAST, LASTDAY.

      ONEVENT: Cadena de consulta de evento XPath.

      Un saludo,

      Xavi.

      Eliminar
  7. es posible apagar el equipo y que se reinicio una hora después?

    ResponderEliminar
    Respuestas
    1. Hola,

      Para encender el equipo a una hora, no podrás hacerlo desde Windows.

      Puedes mirar si en la BIOS del sistema tienes alguna opción para programar el encendido.

      Una vez logres encender el equipo a una hora, después ya desde Windows, podrás programar su reinicio a la hora que indiques.

      Un saludo,

      Xavi.

      Eliminar
  8. es posible programar un reinicio de windows cuando pierda la conexion a internet? se puede hacer eso?

    ResponderEliminar
    Respuestas
    1. Hola,

      Puedes hacerlo por ejemplo con un script de PowerShell.

      Aquí tienes un ejemplo:

      If (!(Test-Connection 8.8.8.8 -quiet)) {
      #Write-Host "No conectado"
      Restart-Computer -Force
      }
      Else {
      #Write-Host "Conectado"
      }

      Si quieres aprender mas sobre PowerShell, tienes todos los posts del blog que tratan sobre PowerShell y además tienes el libro:

      https://www.sysadmit.com/2021/04/libro-powershell-administradores-IT.html

      Saludos,

      Xavi.

      Eliminar
  9. Buenas tardes,

    estoy buscando crear un script que reinicie los equipos cuando lleve x horas activos, se puede realizar?

    Muchas gracias

    ResponderEliminar
    Respuestas
    1. Hola,

      Puedes hacer que el script verifique el uptime de el equipo antes de reiniciar.

      Aquí tienes varios métodos para ver el uptime de un equipo:

      https://www.sysadmit.com/2015/12/windows-ver-uptime.html

      Saludos,

      Xavi.

      Eliminar
  10. Hola, como hago para eliminar un reinicio programado?

    ResponderEliminar
    Respuestas
    1. Si el reinicio programado lo has realizado utilizando las indicaciones de este post, será tan sencillo como eliminar o deshabilitar la tarea programada que realiza el reinicio.

      Saludos,

      Xavi.

      Eliminar
  11. Se podria crear pero por una gpo un reinicio automatico.

    ResponderEliminar