¿Cómo apago, reinicio o desconecto Windows a través de un archivo bat?

660

He estado usando Remote Desktop Connection para ingresar a una estación de trabajo. Pero en este entorno, no puedo usar las opciones de energía en el menú Inicio. Necesito una forma alternativa de apagar o reiniciar.

¿Cómo controlo el estado de energía de mi computadora a través de la línea de comando?

Keng
fuente

Respuestas:

1165

Las formas más comunes de usar el shutdowncomando son:

  • shutdown -s - Apaga.
  • shutdown -r - Se reinicia.
  • shutdown -l - Cierra sesión.
  • shutdown -h - Hiberna.

    Nota: Existe un error común en el que los usuarios piensan que -hsignifica "ayuda" (lo que hace para cualquier otro programa de línea de comandos ... excepto shutdown.exe, donde significa "hibernar"). Luego corren shutdown -hy accidentalmente apagan sus computadoras. Cuidado con eso.

  • shutdown -i- "Modo interactivo". En lugar de realizar una acción, muestra un cuadro de diálogo GUI.

  • shutdown -a - Cancela un comando de apagado anterior.

Los comandos anteriores se pueden combinar con estas opciones adicionales:

  • -f- Fuerza a los programas a salir. Evita que el proceso de apagado se atasque.
  • -t <seconds>- Establece el tiempo hasta el apagado. Use -t 0para apagar de inmediato.
  • -c <message>- Agrega un mensaje de apagado. El mensaje terminará en el registro de eventos.
  • -y - Fuerza una respuesta "sí" a todas las consultas de apagado.

    Nota: Esta opción no está documentada en ninguna documentación oficial. Fue descubierto por estos usuarios de StackOverflow .


Quiero asegurarme de que también se mencionen otras respuestas realmente buenas junto con esta. Aquí no están en un orden particular.

Keng
fuente
188
Lea sobre el uso de -f (for force) en la siguiente respuesta. Dice el tipo que no lo hizo y ahora tiene una computadora atascada en el apagado en el otro lado del planeta durante el fin de semana (:
pasx
11
+1 solo lo que usé en /<switch>lugar de -<switch>. La sección de ayuda también usa /.
legends2k
Mi experiencia: el uso de la opción -s (apagado) en Escritorio remoto (como menciona el OP) solo finaliza el escritorio remoto pero deja intacta la máquina remota.
Heri
3
Yo uso "-r" para máquinas remotas. Por lo tanto, se reiniciará y no necesitará intervención manual.
granadaCoder
66
Si está en una máquina remota, también puede agregar la -fopción para forzar el reinicio. De lo contrario, su sesión puede cerrarse y una aplicación obstinada puede bloquear el sistema. Para forzar un reinicio inmediato: shutdown -t 0 -r -f. Para una opción más amigable "darles un poco de tiempo", puede utilizar la siguiente: shutdown -t 30 -r. El -festá implícito en el tiempo de espera. (de la edición propuesta por Mateusz Konieczny )
Ole VV
375

Si está en una máquina remota, también puede agregar la opción -f para forzar el reinicio. De lo contrario, su sesión puede cerrarse y una aplicación obstinada puede bloquear el sistema.

Lo uso cuando quiero forzar un reinicio inmediato:

shutdown -t 0 -r -f

Para una opción más amigable de "darles algo de tiempo", puede usar esto:

shutdown -t 30 -r

Como puede ver en los comentarios, el tiempo de espera implica la -f.

Brutus 2006 es una utilidad que proporciona una GUI para estas opciones.

JosephStyons
fuente
15
Al leer la ayuda para el apagado en Windows 8.1, veo: "Si el período de tiempo de espera es mayor que 0, el parámetro / f está implícito". Y como el tiempo de espera predeterminado es de 30 segundos, creo que es preferible dar algo de tiempo para el apagado limpio y luego el apagado forzado ocurre después del tiempo de espera.
Zitrax
2
Ese es un buen punto. Creo que cuando escribí esto, el sistema operativo que estaba usando era Windows XP. Veo que el comentario "/ f está implícito" también está en Windows 7. He modificado el ejemplo en consecuencia.
JosephStyons
2
Por defecto tienen 30 segundos. Lo uso para inmediato: apagado / r / t 0 y para amigable: apagado / r
dzampino
81

Nadie ha mencionado la -mopción de apagado remoto:

shutdown -r -f -m \\machinename

También:

  • El -rparámetro provoca un reinicio (que generalmente es lo que desea en una máquina remota, ya que iniciarlo físicamente puede ser difícil).
  • La -fopción de parámetro fuerza el reinicio.
  • Debe tener los privilegios adecuados para apagar la máquina remota, por supuesto.
Dormir
fuente
2
¿Puede el nombre de la máquina ser una dirección IP? Es decir, ¿puedes hacer esto por internet?
mcmillab
Si puede acceder a la máquina a través de \\IP.AD.DR.ESS(es decir, los puertos necesarios están abiertos y tiene los permisos necesarios), entonces sí, esto debería funcionar a través de Internet.
Timothy Zorn el
Primero probé solo con -r y no funcionó porque quería un apagado remoto. Funcionó con shutdown -r -m. -f no era necesario.
Dchris
38

Respuesta original: octubre de 2008

También tienes todos los " rundll32.exe shell32.dll" serie:

(ver actualización a continuación)

  • rundll32.exe user.exe,**ExitWindows** [Apagado rápido de Windows]
  • rundll32.exe user.exe,**ExitWindowsExec** [Reiniciar Windows]

    rundll32.exe shell32.dll,SHExitWindowsEx n
    

donde nsignifica:

  • 0 - LOGOFF
  • 1 - SHUTDOWN
  • 2 - REBOOT
  • 4 - FORCE
  • 8 - POWEROFF

(se puede combinar -> 6 = 2 + 4 FORCE REBOOT)


Actualización de abril de 2015 (más de 6 años):

1800 INFORMACIÓN señala amablemente en los comentarios :

No lo use rundll32.exepara este propósito. Espera que la función que pasó en la línea de comando tenga una firma de método muy específica; no coincide con la firma del método de ExitWindows.

Raymond CHEN escribió:

La firma de la función requerida para las funciones llamadas por rundll32.exees:

void CALLBACK ExitWindowsEx(HWND hwnd, HINSTANCE hinst,
       LPSTR pszCmdLine, int nCmdShow);

Eso no ha impedido que la gente use rundll32para llamar funciones aleatorias que no fueron diseñadas para ser llamadas por rundll32, como user32 LockWorkStationo user32 ExitWindowsEx.

(Uy)

La firma de función real para ExitWindowsEx es:

BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReserved);

Y para hacerlo más claro como el cristal:

Rundll32 es un remanente de Windows 95, y ha quedado en desuso al menos desde Windows Vista porque viola muchas pautas modernas de ingeniería.

VonC
fuente
3
¿Cuál es la diferencia entre apagado y apagado?
Asdfg
17
@Asdfg hoy? ninguna. Para NT4 y versiones anteriores, la placa base no siempre admitía el apagado, solo el apagado (las ventanas estaban completamente cerradas, pero la PC todavía estaba bajo alimentación eléctrica). Solo el apagado (si el hardware lo soportaba en ese momento) cerró las ventanas y cortó la energía eléctrica. Hoy, tanto el apagado como el apagado hacen eso.
VonC
2
No use rundll32.exe para este propósito. Espera que la función que pasó en la línea de comando tenga una firma de método muy específica; no coincide con la firma del método de ExitWindows.
1800 INFORMACIÓN
2
@ 1800INFORMATION muy buen punto. He reescrito la respuesta para dejar en claro que esta no es una opción válida.
VonC
3
Sin embargo, para ser justos, realmente no importa qué tipo de pérdida de memoria o corrupción de pila esté causando si está apagando inmediatamente la PC.
PRMan
10

Otro pequeño consejo: cuando voy por la ruta del archivo por lotes, me gusta poder abortarlo en caso de que lo ejecute accidentalmente. Por lo tanto, el archivo por lotes invoca el apagado, pero luego te deja en el símbolo del sistema.

@echo off
echo Shutting down in 10 seconds. Please type "shutdown /a" to abort.
cmd.exe /K shutdown /f /t 10 /r

Además, dado que está en un temporizador, obtienes la misma emoción que cuando cazas en The Oregon Trail .

Gavin
fuente
1
puede poner pausa en el archivo de baño, y luego cancelar el comando, como la secuencia de aborto sería cualquier tecla
rsk82
@ rsk82, ser capaz de salirse con la suya escribiendo algo fue una desafortunada limitación de mi copia TRS-80 de Oregon Trail también, pero francamente siempre consideré que era una trampa y mi hermano se enfurecía cada vez que lo hacía. Solo digo: ¿por qué querrías enfurecer a mi hermano?
Gavin
7

Cuando se remota a una máquina (el objetivo es Windows XP de todos modos; no estoy seguro acerca del objetivo de Windows Vista), aunque el apagado en el menú de inicio se reemplaza por Desconectar sesión o algo así, debería haber uno llamado 'Seguridad de Windows' que también funciona lo mismo que Ctrl+ Alt+ Endcomo lo señaló Owen.

Carl
fuente
Solía ​​usar ese método pero ya no funciona, es la línea de comando.
user742864
También tengo un gadget que tiene botones para apagar, reiniciar, hibernar, bloquear que funciona en RDP.
user742864
7

Probablemente lo sepa, pero por si acaso: es mucho más fácil escribir shutdown -r(o cualquier comando que desee) en el cuadro "Ejecutar" y presionar enter.

Guarda dejando archivos por lotes por todas partes.

Dean Rather
fuente
sí ... me gusta tener el doble clic sentado allí ... para eso está el archivo -r bat también; o)
Keng
17
cuidado de no ponerlo en programas-> inicio :)
Dean Rather
aw .. y se obtendrá un comportamiento curioso si el código se coloca en un archivo shutdown.bat. ¡Intentalo!
:)
6

Escribiría esto en el Bloc de notas o WordPad para un comando de cierre de sesión básico:

@echo off
shutdown -l

Esto es básicamente lo mismo que hacer clic en iniciar y cerrar sesión manualmente, pero es un poco más rápido si tiene listo el archivo por lotes.

Peter Mortensen
fuente
5

Llego tarde a la fiesta, pero aún no vi esta respuesta. Cuando no desee usar un archivo por lotes o escriba el comando. Simplemente puede establecer el foco en el escritorio y luego usar Alt+ F4.

Windows le preguntará qué desea hacer, seleccione apagar o reiniciar.

Para capturas de pantalla e incluso un video, consulte: https://tinkertry.com/how-to-shutdown-or-restart-windows-over-rdp

msoft
fuente
3
@Keng, leyendo el problema real "No puedo usar la función de apagado / reinicio en el menú Inicio", me parece que quieres saber cómo hacerlo. La línea de comandos es una solución, el teclado es otra. Puede ayudar a otros usuarios que se topan con esta pregunta y solo quieren una solución fácil para apagar o reiniciar.
msoft