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


660

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

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

Ответы:


1165

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


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


188
Прочтите об использовании -f (для силы) в следующем ответе. Говорит парень, у которого этого не было, а теперь у него
завис

11
+1 только что я использовал /<switch>вместо -<switch>. Раздел справки также использует /.
legends2k

Мой опыт: использование опции -s (завершение работы) в удаленном рабочем столе (как упоминается в OP) только завершает работу удаленного рабочего стола, но оставляет удаленный компьютер без изменений.
Хери

3
Я использую "-r" для удаленных машин. Так что он перезагрузится и не нуждается в ручном вмешательстве.
granadaCoder

6
Если вы находитесь на удаленном компьютере, вы также можете добавить -fопцию принудительной перезагрузки. В противном случае сеанс может закрыть и упорное приложение может повесить систему. Чтобы выполнить немедленную перезагрузку: shutdown -t 0 -r -f. Для более дружественной «дать им какое - то время» вариант, вы можете использовать это: shutdown -t 30 -r. Это -fподразумевается таймаутом. (из предложенного редактирования Матеушем Конечным )
Оле В.В.

375

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

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

shutdown -t 0 -r -f

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

shutdown -t 30 -r

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

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


15
Читая справку по завершению работы в Windows 8.1, я вижу: «Если время ожидания больше 0, подразумевается параметр / f». И поскольку время ожидания по умолчанию составляет 30 секунд, я думаю, что предпочтительнее дать некоторое время для чистого отключения, а затем принудительное отключение происходит после истечения времени ожидания.
Цитракс

2
Неплохо подмечено. Я считаю, что когда я писал это, я использовал ОС Windows XP. Я вижу, что замечание «/ f подразумевается» также в Windows 7. Я изменил пример соответственно.
JosephStyons

2
По умолчанию у них есть 30 секунд. Я использую для немедленного: shutdown / r / t 0 и для дружественного: shutdown / r
dzampino

81

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

shutdown -r -f -m \\machinename

Также:

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

2
может ли имя машины быть IP-адресом? То есть, вы можете сделать это через Интернет?
mcmillab

Если вы можете получить доступ к машине через \\IP.AD.DR.ESS(т. Е. Необходимые порты открыты и у вас есть необходимые разрешения), то да, это должно работать через Интернет.
Тимоти Цорн

Сначала я попробовал только с -r, и это не сработало, потому что я хотел удаленного выключения. Он работал с выключением -r -m. -ф был не нужен.
Дрис

38

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


3
Какая разница между выключением и отключением питания?
Asdfg

17
@ Asdfg сегодня? никто. Для NT4 и более ранних версий материнская плата не всегда поддерживала выключение питания, только выключение (окна были полностью закрыты, но компьютер все еще находился под напряжением). Только отключение питания (если оборудование поддерживало его в то время) закрывало окна и отключало электричество. Сегодня как выключение, так и отключение питания делают это.
VonC

2
Не используйте rundll32.exe для этой цели. Ожидается, что функция, которую вы передали в командной строке, имеет очень специфическую сигнатуру метода - она ​​не соответствует сигнатуре метода ExitWindows.
1800 ИНФОРМАЦИЯ

2
@ 1800ИНФОРМАЦИЯ очень хорошая мысль. Я переписал ответ, чтобы было ясно, что это недопустимый вариант.
VonC

3
Чтобы быть справедливым, однако, действительно не имеет значения, какой тип утечки памяти или повреждения стека вы вызываете, если вы немедленно выключаете компьютер.
PRMan

10

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

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

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


1
Вы можете поставить паузу в файле ванны, а затем команду abort, такая последовательность прерывания будет любой клавишей
rsk82

@ rsk82, возможность печатать что-либо было неудачным ограничением моей копии TRS-80 Oregon Trail, но, честно говоря, я всегда считал это обманом, и мой брат был бы в ярости, когда бы я это делал. Просто говорю: почему ты хочешь разозлить моего брата?
Гэвин

7

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


Я использовал этот метод, но он больше не работает, это командная строка.
user742864

У меня также есть гаджет, который имеет кнопки для выключения, перезапуска, спящего режима, блокировки, которая работает в RDP.
user742864

7

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

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


да ... я просто хотел бы, чтобы двойной щелчок сидел там ... для этого тоже нужен файл -r bat; o)
Кенг

17
осторожно, чтобы не ставить его в программы-> автозапуск :)
Дин Скорее,

ау ... и странное поведение будет получено, если код будет помещен в файл shutdown.bat. Попробуй это!
:)

6

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

@echo off
shutdown -l

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


5

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

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

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


3
@Keng, читая актуальную проблему «Я не могу использовать функцию выключения / перезапуска в меню« Пуск »», мне кажется, что вы хотите знать, как это сделать. Командная строка - это одно решение, клавиатура - другое. Это может помочь другим пользователям, которые наткнулись на этот вопрос и просто хотят простое решение для выключения или перезапуска.
Microsoft
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.