Pregunta ¿Cómo cierro, reinicio, cierro sesión de Windows a través de un archivo bat?


He estado usando Conexión de escritorio remoto para acceder a una estación de trabajo, pero no puedo utilizar la función de apagado / reinicio en el menú Inicio mientras hago esto.

He puesto algunas opciones realmente útiles en la respuesta a continuación.

Nota: Quería asegurarme de que también se mencionaran algunas buenas respuestas junto con la mía sobre esto.

Y aquí no están en ningún orden particular.


618
2017-10-02 13:37


origen


Respuestas:


A continuación se detalla cómo realizar las funciones de apagado a través de un archivo por lotes:

  • shutdown -r - reinicia
  • shutdown -s - apaga
  • shutdown -l - desconectarse
  • shutdown -t xx - dónde xx es el número de segundos que se debe esperar hasta el apagado / reinicio / cierre de sesión
  • shutdown -i - le da un cuadro de diálogo para completar qué función desea usar
  • shutdown -a - cancela el comando de apagado anterior ... ¡muy útil!
  • shutdown -h - Hibernate. Fácil error, no es por ayuda
  • shutdown -y - Elimina todas las solicitudes al apagar (la ayuda no está disponible en ninguna documentación)

Opciones adicionales:

  • -f - Forzar la acción seleccionada
  • -t <seconds> - Establecer el tiempo de apagado. Utilizar -t 0 por ahora"
  • -c <message> - Agrega un mensaje al cierre

1112
2017-10-02 13:37



Si está en una máquina remota, también puede agregar la opción -f a fuerza el reinicio De lo contrario, su sesión puede cerrarse y una aplicación obstinada puede colgar 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 -f está implícito por el tiempo de espera.

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


369
2017-10-02 13:45



Nadie ha mencionado -m opción para el apagado remoto:

shutdown -r -f -m \\machinename

También:

  • los -r parámetro provoca un reinicio (que generalmente es lo que desea en una máquina remota, ya que iniciarlo físicamente puede ser difícil).
  • los -f la opción de parámetro fuerza el reinicio.
  • Debe tener los privilegios adecuados para apagar la máquina remota, por supuesto.

79
2018-01-06 14:51



Respuesta original: octubre de 2008

También tienes todo el "rundll32.exe shell32.dll" serie:

(ver la 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
    

dónde n representa:

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

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


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

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

No usar 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.

Raymond CHEN escribió:

La firma de 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 las personas usen rundll32 llamar a funciones aleatorias que no fueron diseñadas para ser llamadas por rundll32, me gusta user32 LockWorkStation o user32 ExitWindowsEx.

(Vaya)

La firma de función real para ExitWindowsEx es:

BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReserved);

Y para que quede claro como el cristal:

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


38
2017-10-02 13:56



Otro pequeño consejo: cuando voy por la ruta del archivo por lotes, me gusta poder abortar en caso de que lo ejecute accidentalmente. Por lo tanto, el archivo por lotes invoca el apagado pero luego lo 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 tiene un temporizador, obtienes la misma emoción que cuando cazando en The Oregon Trail.


9
2018-06-10 03:12



Cuando se remueve en una máquina (el objetivo es Windows XP de todos modos, no estoy seguro sobre el objetivo de Windows Vista), aunque Apagar en el menú de inicio es reemplazado por Desconectar sesión o algo así, debería haber uno llamado 'Seguridad de Windows' que también hace lo mismo que Ctrl + Alt + Fin como lo señaló Owen.


7
2017-10-02 13:57



Probablemente estés al tanto de esto, pero por las dudas: es mucho más fácil escribir shutdown -r (o el comando que desee) en el cuadro "Ejecutar" y presione enter.

Ahorra dejando archivos de lotes por todas partes.


7
2017-10-02 14:01



Yo escribiría esto en Bloc o WordPad para un comando básico de cierre de sesión:

@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.


4
2018-03-11 16:47