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

550

Я использовал Remote Desktop Connection для доступа к рабочей станции, но я не могу использовать функцию shutdown/restart в в меню "Пуск".

В приведенном ниже ответе я поместил несколько действительно полезных опций.

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

И здесь они не имеют особого порядка.

  • 2
    Меня по-прежнему поражает, что вопрос старше 10 лет все еще редактируется. : О)
Теги:
command-line
restart
shutdown

8 ответов

1024
Лучший ответ

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

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

Дополнительные параметры:

  • -f - принудительно выбранное действие
  • -t <seconds> - Установите время на остановку. Используйте -t 0 для "сейчас"
  • 183
    Читайте об использовании -f (для силы) в следующем ответе. Говорит парень, у которого этого не было, и у которого теперь компьютер завис при выключении на другой стороне планеты в выходные дни (:
  • 10
    +1 только что я использовал /<switch> вместо -<switch> . Раздел справки также использует / .
Показать ещё 5 комментариев
332

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

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

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. Я изменил пример соответственно.
Показать ещё 1 комментарий
81

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

shutdown -r -f -m \\machinename

также:

  • Параметр -r вызывает перезагрузку (обычно это то, что вы хотите на удаленной машине, поскольку физическое начало ее может быть затруднено).
  • Параметр параметра -f заставляет перезагружать.
  • Разумеется, у вас должны быть соответствующие привилегии для закрытия удаленного компьютера.
  • 2
    может ли имя машины быть IP-адресом? То есть, вы можете сделать это через Интернет?
  • 0
    Если вы можете получить доступ к машине через \\IP.AD.DR.ESS (то есть необходимые порты открыты и у вас есть необходимые разрешения), тогда да, это должно работать через Интернет.
Показать ещё 1 комментарий
37

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

  • 3
    Какая разница между выключением и отключением питания?
  • 16
    @ Asdfg сегодня? никто. Для NT4 и более ранних версий материнская плата не всегда поддерживала отключение питания, только выключение (окна были полностью закрыты, но компьютер все еще находился под напряжением). Только отключение питания (если оборудование поддерживало его в то время) закрывало окна и отключало электропитание. Сегодня как выключение, так и отключение питания делают это.
Показать ещё 4 комментария
8

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

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

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

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

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

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

  • 0
    да ... я просто хотел бы, чтобы двойной щелчок сидел там ... для этого тоже нужен файл -r bat; о)
  • 16
    осторожно, чтобы не ставить его в программах-> автозагрузка :)
Показать ещё 1 комментарий
6

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

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

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

@echo off
shutdown -l

Это в основном то же самое, что щелкнуть start и logff вручную, но он немного быстрее, если у вас готов пакетный файл.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню