Как отключить - перезапустить - выйти из системы Windows через файл bat?

Я использовал Remote Desktop Connection для доступа к рабочей станции, но я не могу использовать функцию shutdown/restart в в меню "Пуск".

В приведенном ниже ответе я поместил несколько действительно полезных опций.

Примечание: Я хотел удостовериться, что некоторые действительно хорошие ответы были упомянуты вместе с моими на этом.

И здесь они не имеют особого порядка.

Ответ 1

Здесь, как выполнять функции выключения через пакетный файл:

  • shutdown -r - перезапуск
  • shutdown -s - shutsdown
  • shutdown -l - logoff
  • shutdown -t xx - где xx - количество секунд ожидания до выключения/перезапуска/выхода из системы
  • shutdown -i - дает вам диалоговое окно для заполнения какой функции вы хотите использовать
  • shutdown -a - прерывает предыдущую команду отключения... очень удобно!
  • shutdown -h - спящий режим. Простая ошибка - это не помощь
  • shutdown -y - удаляет все приглашения при завершении работы (помощь недоступна в любой документации)

Дополнительные параметры:

  • -f - принудительно выбранное действие
  • -t <seconds> - Установите время на остановку. Используйте -t 0 для "сейчас"

Ответ 2

Если вы находитесь на удаленном компьютере, вы также можете добавить параметр -f в команду force перезагрузки. В противном случае сеанс может закрыться, и упрямое приложение может повесить систему.

Я использую это, когда хочу немедленно перезагрузить компьютер:

shutdown -t 0 -r -f

Для более удобной опции "дать им некоторое время" вы можете использовать это:

shutdown -t 30 -r

Как вы можете видеть в комментариях, -f подразумевается таймаутом.

Brutus 2006 - это утилита, которая предоставляет графический интерфейс для этих параметров.

Ответ 3

Никто не упомянул опцию -m для удаленного выключения:

shutdown -r -f -m \\machinename

также:

  • Параметр -r вызывает перезагрузку (обычно это то, что вы хотите на удаленной машине, поскольку физическое начало ее может быть затруднено).
  • Параметр параметра -f заставляет перезагружать.
  • Разумеется, у вас должны быть соответствующие привилегии для закрытия удаленного компьютера.

Ответ 4

Оригинальный ответ: октябрь 2008 г.

Вы также получили серию " rundll32.exe shell32.dll" :

(см. обновление ниже)

  • rundll32.exe user.exe,**ExitWindows** [Быстрое завершение работы Windows]
  • rundll32.exe user.exe,**ExitWindowsExec** [Перезагрузите Windows]

    rundll32.exe shell32.dll,SHExitWindowsEx n
    

где n означает:

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

(можно комбинировать → 6 = 2 + 4 FORCE REBOOT)


Обновление апреля 2015 года (6+ лет спустя):

1800 ИНФОРМАЦИЯ любезно указывает в комментариях:

Не используйте rundll32.exe для этой цели. Он ожидает, что функция, которую вы передали в командной строке, имеет очень специфическую подпись метода - она ​​не соответствует сигнатуре метода ExitWindows.

Raymond CHEN написал:

Функциональной сигнатурой, требуемой для функций, называемых rundll32.exe, является:

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

Это не помешало людям использовать rundll32 для вызова случайных функций, которые не были вызваны rundll32, например user32 LockWorkStation или user32 ExitWindowsEx.

(ой)

Фактическая сигнатура функции для ExitWindowsEx:

BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReserved);

И сделать это кристально чистым:

rundll32 остается в стороне от Windows 95, и он устарел с по крайней мере Windows Vista, потому что он нарушает множество современных технических рекомендаций.

Ответ 5

Еще один маленький совет: при переходе по пакетному файлу, мне нравится уметь прерывать его, если я запускаю его случайно. Таким образом, командный файл вызывает выключение, но после этого он выйдет из командной строки.

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

Плюс, поскольку он по таймеру, вы получаете те же самые острые ощущения, что и вы, когда охота в тропе Орегона.

Ответ 6

Вероятно, вы знаете об этом, но на всякий случай: гораздо проще просто ввести "shutdown -r" (или любую другую команду) в поле "Запустить" и нажать Enter.

Сохраняет все файлы пакета, лежащие повсюду.

Ответ 7

При удалении в машину (в любом случае, все-таки Windows XP), я не уверен в целевой Windows Vista, хотя Shutdown в меню "Пуск" заменяется "Отключить сеанс" или что-то в этом роде, должно быть одно имя "Windows" Security ", которая также делает то же самое, что и Ctrl + Alt + End, на что указывает Оуэн.

Ответ 8

Я бы написал это в Notepad или WordPad для основной команды выхода:

@echo off
shutdown -l

Это в основном то же самое, что щелкнуть start и logff вручную, но он немного быстрее, если у вас готов пакетный файл.