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

Я использую Подключение К Удаленному Рабочему Столу чтобы попасть в станцию, но я не могу использовать функцию выключения/перезагрузки в меню "Пуск" при этом.

Я поставил несколько действительно полезных вариантов в ответ ниже.

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

и здесь они находятся в определенном порядке.

9 ответов


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

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

дополнительные опции:

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

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

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

shutdown -t 0 -r -f

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

shutdown -t 30 -r

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

Brutus 2006 является утилита, которая предоставляет GUI для этих параметров.


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

shutdown -r -f -m \machinename

также:

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

оригинальный ответ: Oct. 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.

Рэймонд Чен писал:

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

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


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


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

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


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

@echo off
shutdown -l

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


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

Windows спросит вас, что вы хотите сделать, выберите shutdown или restart.

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