Как отключить-перезапустить-выйти из системы 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.
сохраняет пакетные файлы, лежащие повсюду.
Я опаздываю на вечеринку, но еще не видел этого ответа. Если вы не хотите использовать пакетный файл или вводить команду. Вы можете просто установить фокус на рабочий стол, а затем использовать Alt + Ф4.
Windows спросит вас, что вы хотите сделать, выберите shutdown или restart.
для скриншотов и даже видео см.:https://tinkertry.com/how-to-shutdown-or-restart-windows-over-rdp