Як вимкнути, перезапустити або вийти з Windows за допомогою файлу bat?


660

Я використовую підключення до віддаленого робочого столу, щоб потрапити на робочу станцію. Але в цьому середовищі я не можу використовувати параметри живлення в меню "Пуск". Мені потрібен альтернативний спосіб відключення або перезавантаження.

Як я можу контролювати стан живлення комп'ютера за допомогою командного рядка?

Відповіді:


1164

Найпоширеніші способи використання shutdownкоманди:

  • shutdown -s - Вимкнеться.
  • shutdown -r - Резерти.
  • shutdown -l - Журнали вимкнено.
  • shutdown -h - Зимові сплячки.

    Примітка. Існує загальна проблема, в якій користувачі думають, що -hозначає "допомога" (що це робиться для будь-якої іншої програми командного рядка ... за винятком випадків shutdown.exe, коли це означає "сплячий режим"). Потім вони бігають shutdown -hі випадково вимикають комп’ютери. Слідкуйте за цим.

  • shutdown -i- "Інтерактивний режим". Замість того, щоб виконувати дію, вона відображає діалогове вікно GUI.

  • shutdown -a - Відміняє попередню команду відключення.

Команди, наведені вище, можна поєднувати з цими додатковими параметрами:

  • -f- змушує програми виходити. Запобігає зупинці процесу відключення.
  • -t <seconds>- Встановлює час до відключення. Використовуйте -t 0для негайного відключення.
  • -c <message>- Додає повідомлення про відключення. Повідомлення потрапить у Журнал подій.
  • -y - Вимушує відповідь "так" на всі запити відключення.

    Примітка. Цей параметр не зафіксовано в жодній офіційній документації. Це було виявлено цими користувачами StackOverflow .


Хочу переконатися, що разом із цим згадуються й інші справді хороші відповіді. Тут вони не в певному порядку.


188
Прочитайте про використання -f (for force) у наступній відповіді. Каже, хлопець, який цього не зробив і тепер у нього вимкнувся комп'ютер на вимкненні з іншого боку планети протягом вихідних (:
pasx

11
+1 просто те, що я використовував /<switch>замість цього -<switch>. Також використовується розділ довідки /.
legends2k

Мій досвід: Використання опції -s (вимкнення) на віддаленому робочому столі (як згадує ОП) лише припиняє віддалений робочий стіл, але залишає віддалену машину не торканою.
Хері

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

6
Якщо ви знаходитесь на віддаленій машині, ви також можете додати -fможливість примусового перезавантаження. Інакше ваш сеанс може закритися, і вперта програма може повісити систему. Щоб виконати негайну перезавантаження: shutdown -t 0 -r -f. Для більш дружній «дати їм якесь - то час» варіант, ви можете використовувати це: shutdown -t 30 -r. Значення -fмає на увазі тайм-аут. (із запропонованої редакції Матеуша Коньєчного )
Оле VV

375

Якщо ви знаходитесь на віддаленій машині, ви також можете додати параметр -f для примусового перезавантаження. Інакше ваш сеанс може закритися, і вперта програма може повісити систему.

Я використовую це, коли хочу змусити негайно перезавантажити:

shutdown -t 0 -r -f

Для більш доброзичливого варіанту "дайте їм трохи часу" ви можете скористатися цим:

shutdown -t 30 -r

Як ви бачите в коментарях, -f мається на увазі під час очікування.

Brutus 2006 - це утиліта, яка забезпечує графічний інтерфейс для цих параметрів.


15
Читаючи довідку щодо відключення в Windows 8.1, я бачу: "Якщо період очікування перевищує 0, параметр / f мається на увазі". Оскільки тайм-аут за замовчуванням становить 30 секунд, я вважаю, що бажано приділити деякий час чистому відключенню, а потім примусове вимкнення відбувається після таймауту.
Zitrax

2
Це хороший момент. Я вважаю, що коли я це писав, ОС, яку я використовував, була Windows XP. Я бачу, що зауваження "/ f мається на увазі" є і в Windows 7. Я відповідно змінив приклад.
JosephStyons

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

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
ви можете поставити паузу у ванній файлі, а потім скасувати команду, така послідовність переривання буде будь-якою ключовою
rsk82

@ rsk82, тому що я міг відійти від введення чого-небудь, було прикрою обмеженням моєї копії TRS-80 «Oregon Trail», але, чесно кажучи, я завжди вважав це обманом і мій брат озлобився, коли я це робив. Просто кажу: чому б ти хотів розлютити мого брата?
Гавін

7

Коли ви віддаляєтеся в машину (націленою є Windows XP; я не впевнений у цільовій Windows Vista), хоча вимкнення в меню запуску замінено на Роз'єднати сесію або щось подібне, має бути названий "Захист Windows", який також робить те саме, що і Ctrl+ Alt+ End, на що вказував Оуен.


Раніше я використовував цей метод, але він більше не працює, командний рядок це.
користувач742864

У мене також є гаджет, у якому є кнопки для відключення, перезавантаження, сплячки, блокування, які працюють в RDP.
користувач742864

7

Вам, напевно, відомо про це, але про всяк випадок: набагато простіше просто ввести shutdown -r(або будь-яку команду, яка вам подобається) у поле "Виконати" та натиснути клавішу "Ввести".

Зберігає, залишаючи пакетні файли, що лежать скрізь.


так ... Мені просто подобається, щоб подвійне клацання сиділо там ... саме для цього і файл -r bat; о)
Кенг,

17
обережно, щоб не помістити його в програмах-> запуск :)
Дін Швидше

aw .. і допитлива поведінка буде отримана, якщо код розміщений у файлі 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, прочитавши актуальну проблему "Я не в змозі використовувати функцію відключення / перезавантаження в меню" Пуск " , мені здається, що ви хочете знати, як це зробити. Командний рядок - це одне рішення, клавіатура - інше. Це може допомогти іншим користувачам, які натрапляють на це питання і просто хочуть легкого рішення для відключення чи перезавантаження.
msoft
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.