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

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

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

9 ответов

Решение

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

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


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

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

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

shutdown -t 0 -r -f

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

shutdown -t 30 -r

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

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

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

shutdown -r -f -m \\machinename

Также:

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

Оригинальный ответ: октябрь 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 INFORMATION любезно указывает в комментариях:

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

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

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

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

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

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

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

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

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

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

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

@echo off
shutdown -l

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

Некоторые дополнения к выключению и rundll32.exe shell32.dll,SHExitWindowsEx n команды.

LOGOFF - позволяет вам выйти из системы по идентификатору сеанса или имени сеанса

PSShutdown - требует загрузки из windows sysinternals.

bootim.exe - выключение windows 10/8 iu

change / chglogon - запрещает новым пользователям входить в систему или переходить в другой сеанс

NET SESSION /DELETE - завершает сеанс для пользователя

wusa / forcerestart / quiet - менеджер обновлений Windows, но также может перезагрузить компьютер

tsdiscon - отключает вас

rdpinit - выводит вас из системы, хотя на данный момент я не могу найти никакой документации

Другие вопросы по тегам