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

Я использую Remote Desktop Connection для входа на рабочую станцию. Но в этой среде я не могу использовать опции питания в меню "Пуск". Мне нужен альтернативный способ выключения или перезагрузки.

Как управлять питанием компьютера через командную строку?

Комментарии к вопросу (1)
Решение

Наиболее распространенными способами использования команды shutdown являются:

  • shutdown -s - Выключить.

  • shutdown -r - Перезагрузка.

  • shutdown -l - Выход из системы.

  • shutdown -h - Впадает в спячку.

    Примечание: Существует распространенная ошибка, когда пользователи думают, что -h означает "помощь" (что так и есть для всех других программ командной строки... кроме shutdown.exe, где это означает "спящий режим"). Затем они запускают shutdown -h и случайно выключают свой компьютер. Будьте осторожны.

  • shutdown -i - "Интерактивный режим". Вместо выполнения действия выводит диалог графического интерфейса.

  • shutdown -a - отменяет предыдущую команду выключения.

Приведенные выше команды можно комбинировать с этими дополнительными опциями:

  • -f - Принудительное завершение работы программ. Предотвращает застревание процесса выключения.

  • -t - Устанавливает время до выключения. Используйте -t 0 для немедленного выключения.

  • -c - Добавляет сообщение о выключении. Сообщение попадает в журнал событий.

  • -y - Заставляет отвечать "да" на все запросы о выключении.

    Примечание: Эта опция не описана в официальной документации. Она была обнаружена этими пользователями StackOverflow.


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

Комментарии (7)

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

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

shutdown -t 0 -r -f

Для более дружелюбного варианта "дать им немного времени" можно использовать следующее:

shutdown -t 30 -r

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

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

Комментарии (3)

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

shutdown -r -f -m \\machinename

Также:

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

Оригинальный ответ: октябрь 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 - ВЫКЛЮЧЕНИЕ
  • 2 - ПЕРЕЗАГРУЗКА
  • 4 - ФОРС
  • 8 - ВЫКЛЮЧЕНИЕ ПИТАНИЯ

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


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

1800 INFORMATION любезно указывает в комментариях:

Don't use rundll32.exe for this purpose. Он ожидает, что функция, которую вы передали в командной строке, имеет очень специфическую сигнатуру метода - она 'не совпадает с сигнатурой метода ExitWindows.

Raymond CHEN wrote:

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

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

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

(oops)

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

BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReserved);

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

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

Комментарии (6)

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

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

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

Комментарии (2)

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

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

Комментарии (3)

Когда находившимися в машине (цель окна&ампер;усилитель; nbsp;ХР во всяком случае; я не уверен в створ окна&ампер;усилитель; nbsp;Виста), хотя выключение меню "Пуск" заменяется отключить сеанс или что-то подобное, должно быть одно название 'системы безопасности', который также делает то же самое, <и>на Ctrl</роз> + <и>Альт</КБД> + <и>конец</роз> как отметил Оуэн.

Комментарии (2)

Я бы написал так в блокнот или комп для основной команды выхода из системы:

@echo off
shutdown -l

Это в основном такие же, как нажав кнопку Пуск и выхода из системы вручную, но это лишь немного быстрее, если у вас есть пакетный файл готов.

Комментарии (0)

Я'м опоздал на вечеринку, но не видел этого ответа. Когда вы Don'т хотите использовать пакетный файл или введите команду. Вы можете просто установить фокус на столе, а затем использовать <и>Альт</КБД> + <и>Ф4</роз>.

Windows спросит вас, что вы хотите сделать, выберите завершение работы или перезагрузка.

Для скриншотов и даже видео, смотрите: https://tinkertry.com/how-to-shutdown-or-restart-windows-over-rdp

Комментарии (2)