Как мне выключить, перезагрузить или выйти из Windows через файл bat? - PullRequest
638 голосов
/ 02 октября 2008

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

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

Ответы [ 9 ]

1146 голосов
/ 02 октября 2008

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

  • shutdown -s - Отключается.
  • shutdown -r - Перезагрузка.
  • shutdown -l - Выход из системы.
  • shutdown -h - Спящие.

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

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

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

Команды выше могут быть объединены с этими дополнительными опциями:

  • -f - Принудительно завершает работу программ. Предотвращает зависание процесса выключения.
  • -t <seconds> - Устанавливает время до выключения. Используйте -t 0 для немедленного выключения.
  • -c <message> - Добавляет сообщение о выключении. Сообщение попадет в журнал событий.
  • -y - принудительно отвечает «да» на все запросы на отключение.

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


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

374 голосов
/ 02 октября 2008

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

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

shutdown -t 0 -r -f

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

shutdown -t 30 -r

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

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

81 голосов
/ 06 января 2009

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

shutdown -r -f -m \\machinename

Также:

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

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

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

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

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

Раймонд ЧЕН писал:

Подпись функции, требуемая для функций, вызываемых 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, потому что он нарушает многие современные технические рекомендации.

10 голосов
/ 10 июня 2011

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

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

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

7 голосов
/ 02 октября 2008

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

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

7 голосов
/ 02 октября 2008

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

5 голосов
/ 15 августа 2018

Я опоздал на вечеринку, но пока не видел этого ответа. Если вы не хотите использовать командный файл или введите команду. Вы можете просто установить фокус на рабочий стол и затем использовать Alt + F4 .

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

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

4 голосов
/ 11 марта 2010

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

@echo off
shutdown -l

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...