it-swarm.com.ru

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

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

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

640
Keng

Наиболее распространенные способы использования команды 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 .


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

1148
Keng

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

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

shutdown -t 0 -r -f

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

shutdown -t 30 -r

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

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

374
JosephStyons

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

shutdown -r -f -m \\machinename

Также:

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

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

37
VonC

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

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

Кроме того, так как это по таймеру, вы получаете примерно тот же трепет, что и когда охота на Орегонской тропе .

10
Gavin

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

7
Carl

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

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

7
Dean Rather

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

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

Снимки экрана и даже видео см .: https://tinkertry.com/how-to-shutdown-or-restart-windows-over-rdp

5
msoft

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

@echo off
shutdown -l

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

4
Grant