33 Votos

Script Batch: Apagar Computadora Windows

Tutorial de Stefan Trost | Última actualización el 24/04/2024 | Creado el 13/03/2022

Con este pequeño script de lotes de dos líneas, simplemente puede apagar una computadora con el sistema operativo Windows:

@echo off
%SYSTEMROOT%\system32\shutdown.exe -s -t 0

Para usar el script, simplemente cree un nuevo archivo de texto plano, copie las 2 líneas en eso y cambie la extensión de archivo de "txt" a "bat".

Cuando haga doble clic en este archivo, la computadora se apagará automáticamente sin demanda.

Extensiones útiles para el Script

Por supuesto, ya podemos utilizar el script presentado exactamente como está escrito allí. Sin embargo, dependiendo de sus necesidades, también puede realizar algunas modificaciones y extensiones al script para sacarle aún más provecho. Nos gustaría echar un vistazo a lo que es posible y cómo funciona en las siguientes secciones:

Integración en otros Scripts

Este script se puede utilizar, por ejemplo, dentro de los archivos de script por lotes grandes que requieren un largo tiempo de procesamiento. Por ejemplo, los archivos batch en los que se realizan muchas acciones o se inicia y se ejecuta una gran cantidad de programas.

Si desea que la computadora se apague automáticamente después de que se haya procesado el script, es suficiente agregar la segunda línea del código de ejemplo al final del script por lotes largo como última línea. Esto evita que el usuario tenga que esperar frente a la computadora hasta que finalice el script, ya que la computadora se apagará automáticamente una vez finalizado el trabajo, por lo que usted ya no tendrá que preocuparse por el apagado.

Apagado retrasado de la Computadora

El 0 respectivamente el último parámetro en el comando indica que el apagado debe realizarse dentro de 0 segundos, eso significa, inmediatamente y sin demora. Usar un número diferente allí, hace que la computadora se apague con un retraso, como por ejemplo muestra esta llamada:

%SYSTEMROOT%\system32\shutdown.exe -s -t 180

Aquí pasamos "-t 180", lo que significa que apagamos el PC después de 3 minutos (3 x 60 segundos después de llamar al comando). Por cierto, la letra "t" aquí significa "time" (tiempo).

La especificación del tiempo siempre debe darse como un número entero en segundos. Se puede utilizar un valor máximo de 315360000 (10 años). Si omitimos especificar una hora (es decir, si simplemente escribimos "shutdown.exe -s" sin ninguna especificación de hora), se asume un valor t de 30 de forma predeterminada, lo que significa que la computadora se apaga después de medio minuto.

Aparte de esto, también es importante tener en cuenta que la definición del tiempo siempre debe entenderse como algo así como una "cuenta atrás" y no como un tiempo absoluto. Esto significa que si, por ejemplo, damos la orden de que la computadora debe apagarse en una hora (3600 segundos) a las 17:00 horas, la computadora sólo se apagará realmente a las 18:00, si la computadora se mantiene encendido todo el tiempo restante. Sin embargo, si mientras tanto el ordenador entra en modo de espera, digamos a las 17:10, la cuenta atrás para el apagado también se detiene y no se reanuda hasta que el ordenador se ha vuelto a encender. Debemos tener esto en cuenta, especialmente al definir períodos de tiempo más largos.

Reiniciar la Computadora

El parámetro "s", que hemos utilizado en todos nuestros ejemplos anteriores hasta ahora, significa la palabra inglesa "shutdown". Aunque el nombre del programa "shutdown.exe" no lo sugiere inmediatamente, también podemos utilizar el mismo programa para reiniciar nuestro ordenador inmediatamente o después de un período de tiempo arbitrario definido por el parámetro "t". Lo único que tenemos que cambiar en el comando que hemos aprendido hasta ahora es reemplazar el parámetro "s" por "r". La letra "r" significa "restart" (reinicio).

%SYSTEMROOT%\system32\shutdown.exe -r -t 0

Con esta llamada a "shutdown.exe" reiniciamos nuestro ordenador inmediatamente después de llamar al comando. Por supuesto, esta vez también podemos trabajar con un retraso de tiempo, como muestra el siguiente ejemplo:

%SYSTEMROOT%\system32\shutdown.exe -r -t 60

Nuevamente podemos definir cualquier tiempo entre 0 y 315360000 segundos usando el parámetro de tiempo "t". En el ejemplo, dejamos que la computadora se reinicie exactamente después de 60 segundos respectivamente después de un minuto.

Poner la Computadora en Hibernación o Modo de Suspensión

Hasta ahora hemos visto los parámetros de la línea de comandos que podemos usar para apagar o reiniciar nuestra computadora. Sin embargo, más allá de eso, Windows también se puede poner en estado de hibernación o en modo de suspensión para ahorrar energía pero también para poder reanudar rápidamente una sesión existente. Estos estados también se pueden activar mediante un script y son útiles, por ejemplo, si después de ejecutar un script largo queremos continuar en el mismo punto donde lo dejamos con todos los programas y archivos abiertos.

El parámetro para hibernar nuestro ordenador es "h". Desafortunadamente, este parámetro no se puede utilizar de la misma manera que hemos visto anteriormente para "s" (apagar) o "r" (reiniciar). Además, no hay ningún parámetro para shutdown.exe para suspender la computadora, por lo que tenemos que proceder de manera completamente diferente para activar ese estado.

Dado que activar estos estados es correspondientemente más complicado y ocuparía demasiado espacio en este tutorial, he escrito un tutorial separado sobre cómo activar la hibernación y el modo de suspensión de Windows usando un script, en el que podemos entrar ese tema en más detalles de los que es posible aquí en un sólo párrafo.

Tratamiento de Programas y Archivos abiertos

Al ejecutar un comando para apagar nuestro ordenador automáticamente, inevitablemente surge la pregunta de qué ocurre si todavía tenemos aplicaciones o archivos abiertos en el momento en que debería producirse el apagado. La respuesta a esta pregunta depende, por un lado, de nuestro tiempo especificado mediante el parámetro "t", por otro lado, también podemos controlar conscientemente el comportamiento mediante el parámetro "f" (que aún no hemos introducido). En esta sección nos gustaría ver cómo funciona esto en detalle.

Básicamente, si la computadora está apagada, pueden suceder dos cosas diferentes: o todos los programas se cierran automáticamente sin ningún aviso y los cambios no guardados en los archivos se pierden, o el usuario tiene la oportunidad de guardar los archivos no guardados antes de apagarlos o reiniciarlos mostrando un mensaje antes de cerrar que los programas con cambios no guardados todavía están abiertos.

Cuál de estos dos casos se produce depende de nuestra convocatoria. La siguiente tabla proporciona una descripción general de los diferentes casos que pueden ocurrir:

ComandoAcción
shutdown -sApagado inmediato sin preguntar ni esperar
shutdown -s -t 0Consulta "Programas abiertos" / "Programa en espera" / "Cambios no guardados"
shutdown -s -t 60Apagado inmediato sin preguntar ni esperar
shutdown -s -f -t 0Apagado inmediato sin preguntar ni esperar

Si utilizamos shutdown.exe sin ningún otro parámetro como f o t, se produce un apagado automático sin mayor investigación. Esto significa que, en este caso, los archivos no guardados se perderían. Lo mismo se aplica si se ha definido un retraso de al menos un segundo a través del parámetro t (si llamamos a "shutdown -s" sin especificar t, se usa un retraso de 30 segundos por defecto para que t también sea superior a 0 en este caso). Si por el contrario definimos un apagado inmediato y sin retardo alguno mediante "-t 0", por defecto se produce una consulta sobre los archivos no guardados, por lo que aún es posible guardarlos en el último momento. Si queremos evitar esto, podemos pasar adicionalmente el parámetro f (force stop). Si se establece este parámetro, "-t 0" también provocará un apagado inmediato sin ninguna consulta. Para t > 0, f se establece automáticamente y no se puede desactivar.

Probé estas llamadas en varias computadoras con Windows 11, Windows 10, Windows 7 y Windows XP. Windows 11, Windows 10 y Windows 7 se comportaron en mis pruebas como se describe. Windows XP, por otro lado, sólo cerraba programas con archivos no guardados sin más investigación si "f" se definió explícitamente. Los otros sistemas siempre asumieron implícitamente que "f" se establecería tan pronto como t fuera mayor que 0. Desafortunadamente, shutdown.exe no conoce ningún otro parámetro para anular este comportamiento para conservar la opción de almacenamiento incluso en el caso de un apagado o reinicio retrasado.

Aunque siempre usamos el parámetro "-s" (apagar) para las llamadas de ejemplo que se muestran en la tabla, "-r" (reiniciar) se comporta de la misma manera.

Retirar Comando

El parámetro de tiempo "t" se puede utilizar para definir tiempos de espera muy largos hasta que se apaga o reinicia la computadora. Como ya se ha mencionado anteriormente, es posible un retraso de hasta diez años. Sólo después de que este tiempo haya expirado se realizará el apagado (-s) o el reinicio (-r) iniciado. Pero, ¿qué podemos hacer si, dentro de este período de tiempo que puede durar años, cambiamos de opinión después de un tiempo y queremos retirar el comando?

Los desarrolladores de "shutdown.exe" pensaron exactamente en este caso y nos dieron el parámetro "a" (abort / abortar). El siguiente ejemplo muestra cómo podemos usar este parámetro para cancelar nuestra acción programada:

%SYSTEMROOT%\system32\shutdown.exe -a

En consecuencia, simplemente tenemos que llamar a "shutdown.exe" con el único parámetro "a". Esto eliminará el apagado o reinicio planificado. El parámetro "a" funciona independientemente de cuál de estas dos acciones tengamos programadas.

Por supuesto, este comando sólo funciona si se llama dentro del período de tiempo definido por "t" y no después. Si hemos llamado a "shutdown.exe" con "-t 0" (ejecución inmediata), siempre es tarde para abortar. Si por el contrario hemos iniciado el programa con "-t 60" (60 segundos), por ejemplo, y emitimos el comando de abortar después de, por ejemplo, 30 segundos, no es demasiado tarde y el apagado automático o reiniciar aún se puede evitar.

Cambiar Comando

Además, si queremos cambiar el retraso de un apagado ya programado, primero debemos llamar al comando "shutdown.exe -a" antes de poder definir una nueva hora a través de "shutdown.exe".

Supongamos que hemos fijado el tiempo de apagado en 180 segundos a partir de ahora y ahora nos gustaría reducirlo retrospectivamente a sólo 60 segundos. Quizás ahora se podría esperar que simplemente podamos sobrescribir el comando estableciendo otra hora nuevamente. Sin embargo, si usáramos la siguiente secuencia de comandos, el segundo comando fallaría porque el apagado ya está configurado en 180 segundos y el temporizador ya está corriendo. A pesar de esta segunda llamada, el apagado se produciría después de 180 segundos.

%SYSTEMROOT%\system32\shutdown.exe -s -t 180
%SYSTEMROOT%\system32\shutdown.exe -s -t 60

Sería correcto así:

%SYSTEMROOT%\system32\shutdown.exe -s -t 180
%SYSTEMROOT%\system32\shutdown.exe -a
%SYSTEMROOT%\system32\shutdown.exe -s -t 60

Aquí primero definimos nuevamente un tiempo de 180 segundos para nuestro apagado. Sin embargo, para eliminar este comando, lo primero que debemos hacer es llamar a "shutdown.exe -a" como hemos visto en la última sección. Sólo entonces podremos definir una nueva hora para el apagado (aquí "shutdown.exe -s -t 60").

Redémarrage Manuel

Otra forma de "retirar" o "deshacer" el comando de apagado es apagar o reiniciar manualmente la computadora antes de que llegue el momento de la acción automática. Una vez que hagamos esto, cualquier apagado o reinicio del sistema programado a través de shutdown.exe se eliminará automáticamente.

Notificaciones de Usuario

Si utilizamos uno de los comandos presentados aquí para indicarle a nuestra computadora que no se apague o reinicie inmediatamente, sino solo después de un cierto retraso, la cuenta regresiva que se inició con esto no se ejecuta en segundo plano en secreto. En cambio, el usuario recibe varios mensajes durante el período de tiempo que expira, que pueden diferir según la duración del retraso y la versión de Windows utilizada. En general, estas notificaciones se vuelven más intrusivas cuanto más nos acercamos a la hora de apagado.

  • Para períodos de tiempo cortos inferiores a 3 minutos, inmediatamente aparece una pequeña ventana de diálogo anunciando el apagado.
  • Para periodos de tiempo entre 3 y 10 minutos se muestran dos pequeñas ventanas de diálogo. El primer cuadro de diálogo anuncia inmediatamente el apagado en X minutos, el segundo cuadro de diálogo le recuerda nuevamente 2 minutos antes del apagado.
  • Si el retraso supera los 10 minutos, primero aparece una notificación sobre el apagado en la bandeja, luego una advertencia adicional 10 minutos antes del apagado y, dependiendo del sistema, otro cuadro de diálogo 2 minutos antes del apagado.

En algunas versiones de Windows, el último cuadro de diálogo antes del apagado mostraba una cuenta regresiva del tiempo restante en las pruebas, en otras versiones de Windows solo se mostraba el tiempo sin ninguna cuenta regresiva.

Lista de Parámetros

Finalmente, nos gustaría resumir todos los parámetros utilizados en este tutorial, así como algunos otros parámetros útiles en la siguiente lista. Al hacer clic en "Detalles" puede ir a la sección correspondiente dentro de este tutorial donde se describe el parámetro en cuestión y puede encontrar ejemplos de cómo utilizarlo.

ParámetroSignificado
-s(shutdown)Apaga la computadora.Detalles
-r(restart)Reinicia la computadora.Detalles
-h(hibernation)Pone la computadora en estado de hibernación.Detalles
-l(logout)Cierra la sesión del usuario actual.
-a(abort)Anula el apagado o reinicio.Detalles
-t x(time)Hace que el apagado o reinicio se realice solo después de x segundos. Si se omite este parámetro, la acción se produce después de 30 segundos de forma predeterminada. 0 conduce a una ejecución inmediata, se puede utilizar un valor máximo de 315360000 (10 años). No se puede utilizar con -h.Detalles
-f(force stop)Puede utilizar este parámetro para forzar el cierre de las aplicaciones potencialmente activas sin previo aviso. Los cambios no guardados en los archivos se pueden perder. Si t es mayor que 0, el parámetro -f se aplica automáticamente.Detalles
-i(interface)Muestra una interfaz gráfica de usuario que permite configurar el apagado manualmente.

Shutdown.exe conoce algunos otros parámetros además de los parámetros enumerados en esta compilación, pero no son necesarios para los fines que se describen aquí. Por ejemplo, el parámetro "c" (comment / comentario) se puede utilizar para definir un comentario sobre el reinicio o el apagado, o el parámetro "d" se puede utilizar para especificar un motivo para el reinicio o el apagado. Si desea obtener más información sobre estos y otros parámetros, simplemente puede utilizar la llamada de línea de comando "shutdown -?". Con este comando, shutdown.exe imprime una lista de todos los parámetros posibles directamente en la línea de comando. Tenga en cuenta que los parámetros disponibles pueden diferir según la versión de Windows utilizada.

Información de Fondo

Nuestro script llama al programa shutdown.exe, que inicia el proceso de apagado o reinicio de Windows y que también puede usarse para poner la computadora en modo de suspensión. Este programa se encuentra en el subdirectorio "system32" de la carpeta de Windows (normalmente esto resulta en la ruta "C:\Windows\System32").

Sin embargo, dado que la carpeta del sistema puede tener una ruta absoluta diferente en cada computadora (dependiendo de dónde se haya instalado Windows), en lugar de usar la ruta absoluta mencionada, usamos la constante "%SYSTEMROOT%", que siempre nos da la carpeta correcta para la instalación del sistema respectivo para la computadora en la que se ejecuta el comando. Después de todo, es posible que alguien no haya instalado Windows en la unidad C: o que la carpeta difiera de una versión anterior de Windows a versiones futuras de Windows.

Escritos alternativos

Normalmente, Windows encuentra el programa "shutdown.exe" incluso sin especificar una ruta. Esto nos permite acortar el comando (aquí para un apagado inmediato) a la siguiente línea:

shutdown -s -t 0

Además, los parámetros también se pueden pasar con una barra en lugar del guión utilizado en la mayoría de los ejemplos. Con esto, el comando mencionado quedaría así:

shutdown /s /t 0

Generalmente, todas las opciones mencionadas deberían funcionar, independientemente de si usa el guión o la barra y de si define la ruta completa o no. En caso de duda y para estar seguro, por supuesto, debe probar el comando en la computadora en la que se ejecutará el script antes de usarlo de manera productiva.

ResponderPositivoNegativoFechaVotos
00 Votos

¿Existe alguna posibilidad de llamar a shutdown.exe en un Windows moderno de tal manera que, a pesar de un retraso de tiempo definido (es decir, parámetro t > 0), no todo se cierre automáticamente, sino que se pregunta, en caso de que los programas o archivos no guardados todavía estén abiertos?
22/04/2024 a las 13:47

ResponderPositivo Negativo
11 Voto

Dado que el parámetro t tiene que ser igual a cero para obtener una demanda respetivamente para evitar el cierre forzado de programas, puede hacer lo siguiente, por ejemplo:

timeout /t 180 /nobreak
shutdown -s -t 0

Aquí el parámetro t permanece en 0, para que no se suprima el mensaje sobre programas que aún están abiertos. Al mismo tiempo, simplemente eliminamos el retraso del comando shutdown con un tiempo de espera de 3 minutos (180 segundos) y lo agregué por adelantado.
22/04/2024 a las 22:15

Positivo Negativo
Responder
Responder

Sobre el Autor

AvatarPuede encontrar software de Stefan Trost en la pagina es.sttmedia.com. ¿Necesita un software individual según sus propios requisitos? Escribenos: es.sttmedia.com/contacto
Ver Perfil

 

Temas Relacionados

La Búsqueda de Askingbox

Información | 0 Comentarios

Cómo editar un Script Batch

Pregunta | 1 Respuesta

Aviso Importante

Por favor tenga en cuenta: Las contribuciones publicadas en askingbox.com son contribuciones de los usuarios y no deben reemplazar el asesoramiento profesional. No son verificados por independientes y no reflejan necesariamente la opinión de askingbox.com. Aprende más.

Participar

Haga su propia pregunta o escriba su propio artículo en askingbox.com. He aquí cómo.