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

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

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

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

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

вопрос задан 2.10.2008
Keng
30321 репутация

9 ответов


  • 1126 рейтинг

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

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

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

    • -f - Принудительное действие выбранного действия
    • -t <seconds> - Установите время на остановку. Используйте -t 0 для «сейчас»
    • -c <message> - добавляет сообщение для выключения
    ответ дан Keng, с репутацией 30321, 2.10.2008
  • 371 рейтинг

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

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

     shutdown -t 0 -r -f
     

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

     shutdown -t 30 -r
     

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

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

    ответ дан JosephStyons, с репутацией 35927, 2.10.2008
  • 81 рейтинг

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

     shutdown -r -f -m \\machinename
     

    Также:

    • Параметр -r вызывает перезагрузку (обычно это то, что вы хотите на удаленной машине, поскольку физическое начало ее может быть затруднено).
    • Опция -f параметра заставляет перезагружать.
    • Разумеется, у вас должны быть соответствующие привилегии для закрытия удаленного компьютера.
    ответ дан Kip, с репутацией 64794, 6.01.2009
  • 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 .

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

    ответ дан VonC, с репутацией 807261, 2.10.2008
  • 9 рейтинг

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

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

    Кроме того, поскольку он находится на таймере, вы получаете те же острые ощущения, что и вы, когда охотитесь на The Oregon Trail .

    ответ дан Gavin, с репутацией 6968, 10.06.2011
  • 7 рейтинг

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

    ответ дан Carl, с репутацией 4420, 2.10.2008
  • 7 рейтинг

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

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

    ответ дан Dean Rather, с репутацией 17475, 2.10.2008
  • 4 рейтинг

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

     @echo off
    shutdown -l
     

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

    ответ дан Kip, с репутацией 64794, 11.03.2010
  • 4 рейтинг

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

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

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

    ответ дан msoft, с репутацией 361, 15.08.2018