Come posso spegnere, riavviare o disconnettermi da Windows tramite un file bat?


660

Ho usato Connessione desktop remoto per entrare in una workstation. Ma in questo ambiente, non posso usare le opzioni di risparmio energia nel menu Start. Ho bisogno di un modo alternativo per arrestare o riavviare.

Come posso controllare lo stato di alimentazione del mio computer tramite la riga di comando?

Risposte:


1165

I modi più comuni per utilizzare il shutdowncomando sono:

  • shutdown -s - Spegnere.
  • shutdown -r - Si riavvia.
  • shutdown -l - Si disconnette.
  • shutdown -h - Iberna.

    Nota: c'è una trappola comune in cui gli utenti pensano che -hsignifichi "aiuto" (cosa che fa per ogni altro programma da riga di comando ... eccetto shutdown.exedove significa "letargo"). Quindi corrono shutdown -he spengono accidentalmente i loro computer. Attenzione per quello.

  • shutdown -i- "Modalità interattiva". Invece di eseguire un'azione, visualizza una finestra di dialogo della GUI.

  • shutdown -a - Annulla un precedente comando di spegnimento.

I comandi sopra possono essere combinati con queste opzioni aggiuntive:

  • -f- Forza la chiusura dei programmi. Impedisce il blocco del processo di arresto.
  • -t <seconds>- Imposta il tempo fino allo spegnimento. Utilizzare -t 0per spegnere immediatamente.
  • -c <message>- Aggiunge un messaggio di spegnimento. Il messaggio finirà nel registro eventi.
  • -y - Forza una risposta "sì" a tutte le richieste di arresto.

    Nota: questa opzione non è documentata in alcuna documentazione ufficiale. È stato scoperto da questi utenti StackOverflow .


Voglio assicurarmi che vengano menzionate anche altre risposte davvero valide insieme a questa. Eccoli senza alcun ordine particolare.


188
Leggi sull'uso di -f (per force) nella prossima risposta. Dice che il ragazzo che non ha funzionato e ora ha un computer bloccato allo spegnimento dall'altra parte del pianeta durante il fine settimana (:
pasx

11
+1 solo quello che ho usato /<switch>invece di -<switch>. Utilizza anche la sezione di aiuto /.
legends2k

La mia esperienza: l'uso dell'opzione -s (arresto) in Desktop remoto (come menzionato dall'OP) termina solo il desktop remoto ma lascia intatta la macchina remota.
Heri,

3
Uso "-r" per macchine remote. Quindi si riavvierà e non è necessario un intervento manuale.
granadaCoder

6
Se sei su un computer remoto, potresti anche voler aggiungere l' -fopzione per forzare il riavvio. Altrimenti la sessione potrebbe chiudersi e un'app testarda può bloccare il sistema. Per forzare un riavvio immediato: shutdown -t 0 -r -f. Per un più amichevole opzione "dare loro un po 'di tempo", è possibile utilizzare questo: shutdown -t 30 -r. Il -fè implicito dal timeout. (dalla proposta di modifica di Mateusz Konieczny )
Ole VV

375

Se sei su un computer remoto, potresti anche voler aggiungere l'opzione -f per forzare il riavvio. Altrimenti la sessione potrebbe chiudersi e un'app testarda può bloccare il sistema.

Lo uso ogni volta che voglio forzare un riavvio immediato:

shutdown -t 0 -r -f

Per un'opzione più amichevole "dai loro del tempo", puoi usare questo:

shutdown -t 30 -r

Come puoi vedere nei commenti, il -f è implicito dal timeout.

Brutus 2006 è un'utilità che fornisce una GUI per queste opzioni.


15
Leggendo la guida per lo spegnimento su Windows 8.1 vedo: "Se il periodo di timeout è maggiore di 0, il parametro / f è implicito." E poiché il timeout predefinito è di 30 secondi, penso che sia preferibile dedicare un po 'di tempo per l'arresto pulito e quindi l'arresto forzato avviene dopo il timeout.
Zitrax,

2
È un buon punto. Credo che quando ho scritto questo, il sistema operativo che stavo usando era Windows XP. Vedo che l'osservazione "/ f è implicita" si trova anche in Windows 7. Ho modificato l'esempio di conseguenza.
JosephStyons,

2
Di default hanno 30 secondi. Uso immediatamente: shutdown / r / t 0 e friendly: shutdown / r
dzampino

81

Nessuno ha menzionato l' -mopzione per l'arresto remoto:

shutdown -r -f -m \\machinename

Anche:

  • Il -rparametro provoca un riavvio (che di solito è quello che si desidera su un computer remoto, poiché l'avvio fisico potrebbe essere difficile).
  • L' -fopzione parametro impone il riavvio.
  • È necessario disporre dei privilegi appropriati per spegnere la macchina remota, ovviamente.

2
il nome della macchina può essere un indirizzo IP? Cioè, puoi farlo su Internet?
mcmillab,

Se è possibile accedere alla macchina tramite \\IP.AD.DR.ESS(ovvero le porte necessarie sono aperte e si dispone delle autorizzazioni necessarie), quindi sì, dovrebbe funzionare su Internet.
Timothy Zorn,

Prima ho provato solo con -r e non ha funzionato perché volevo un arresto remoto. Ha funzionato con shutdown -r -m. -f non era necessario.
Dchris,

38

Risposta originale: ottobre 2008

Hai anche ottenuto tutto " rundll32.exe shell32.dll" Serie:

(vedi aggiornamento sotto)

  • rundll32.exe user.exe,**ExitWindows** [Arresto rapido di Windows]
  • rundll32.exe user.exe,**ExitWindowsExec** [Riavvia Windows]

    rundll32.exe shell32.dll,SHExitWindowsEx n
    

dove nsta per:

  • 0 - LOGOFF
  • 1 - SHUTDOWN
  • 2 - REBOOT
  • 4 - FORCE
  • 8 - POWEROFF

(può essere combinato -> 6 = 2 + 4 FORCE REBOOT)


Aggiornamento aprile 2015 (oltre 6 anni):

1800 INFORMAZIONI sottolinea gentilmente nei commenti :

Non utilizzare rundll32.exeper questo scopo. Si aspetta che la funzione che hai passato sulla riga di comando abbia una firma del metodo molto specifica - non corrisponde alla firma del metodo di ExitWindows.

Raymond CHEN ha scritto:

La firma della funzione richiesta per le funzioni chiamate da rundll32.exeè:

void CALLBACK ExitWindowsEx(HWND hwnd, HINSTANCE hinst,
       LPSTR pszCmdLine, int nCmdShow);

Ciò non ha impedito alle persone di utilizzare rundll32per chiamare funzioni casuali che non sono state progettate per essere chiamate da rundll32, come user32 LockWorkStationo user32 ExitWindowsEx.

(Oops)

La firma della funzione effettiva per ExitWindowsEx è:

BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReserved);

E per renderlo cristallino:

Rundll32 è un residuo di Windows 95 ed è stato deprecato almeno da Windows Vista perché viola molte linee guida di progettazione moderne.


3
qual è la differenza tra spegnimento e spegnimento?
Asdfg

17
@Asdfg oggi? nessuna. Per NT4 e precedenti, la scheda madre non supportava sempre lo spegnimento, ma solo l'arresto (Windows era completamente chiuso, ma il PC era ancora sotto tensione elettrica). Solo lo spegnimento (se l'hardware lo supportava al momento) ha chiuso le finestre e interrotto la corrente elettrica. Oggi sia lo spegnimento che lo spegnimento.
VonC,

2
Non utilizzare rundll32.exe per questo scopo. Si aspetta che la funzione che hai passato sulla riga di comando abbia una firma del metodo molto specifica - non corrisponde alla firma del metodo di ExitWindows.
1800 INFORMAZIONI

2
@ 1800INFORMAZIONI ottimo punto. Ho riscritto la risposta per chiarire che questa non è un'opzione valida.
VonC,

3
Ad essere onesti, tuttavia, non importa quale tipo di perdita di memoria o corruzione dello stack stai causando se spegni immediatamente il PC.
PRMan,

10

Un altro piccolo suggerimento: quando seguo il percorso del file batch, mi piace essere in grado di interromperlo nel caso lo avessi eseguito accidentalmente. Quindi il file batch richiama l'arresto ma ti lascia al prompt dei comandi in seguito.

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

Inoltre, dato che è su un timer, ottieni quasi lo stesso brivido che provi quando vai a caccia nell'Oregon Trail .


1
puoi mettere in pausa il file del bagno e quindi interrompere il comando, tale sequenza di interruzione sarebbe qualsiasi chiave
rsk82

@ rsk82, riuscire a cavarmela con la digitazione di qualsiasi cosa è stata una sfortunata limitazione anche della mia copia TRS-80 di Oregon Trail, ma sinceramente l'ho sempre considerato barare e mio fratello si arrabbiava ogni volta che lo facevo. Dico solo: perché dovresti far arrabbiare mio fratello?
Gavin,

7

Quando viene remotato in una macchina (la destinazione è comunque Windows XP; non sono sicuro della destinazione Windows Vista), sebbene l' arresto nel menu di avvio sia sostituito da Disconnect Session o qualcosa del genere, dovrebbe essercene uno chiamato "Sicurezza di Windows" che fa anche la stessa cosa di Ctrl+ Alt+ Endcome indicato da Owen.


Usavo quel metodo ma non funziona più, riga di comando lo è.
user742864

Ho anche un gadget che ha pulsanti per l'arresto, il riavvio, l'ibernazione, il blocco che funziona in RDP.
user742864

7

Probabilmente ne sei a conoscenza, ma per ogni evenienza: è molto più semplice digitare shutdown -r(o qualunque comando tu voglia) nella casella "Esegui" e premere invio.

Salva lasciando file batch ovunque.


sì ... mi piace solo avere il doppio clic seduto lì ... ecco a cosa serve anche il file -r bat; o)
Keng,

17
facendo attenzione a non inserirlo in programmi-> avvio :)
Dean Piuttosto,

aw .. e si otterranno comportamenti curiosi se il codice viene inserito in un file shutdown.bat. Provalo!
:)

6

Vorrei scrivere questo in Blocco note o WordPad per un comando di disconnessione di base:

@echo off
shutdown -l

Questo è fondamentalmente lo stesso di fare clic su Avvia e Disconnetti manualmente, ma è leggermente più veloce se il file batch è pronto.


5

Sono in ritardo alla festa, ma non ho ancora visto questa risposta. Quando non si desidera utilizzare un file batch o digitare il comando. Puoi semplicemente impostare lo stato attivo sul desktop e quindi utilizzare Alt+ F4.

Windows ti chiederà cosa vuoi fare, selezionare lo spegnimento o il riavvio.

Per schermate e persino un video, vedere: https://tinkertry.com/how-to-shutdown-or-restart-windows-over-rdp


3
@Keng, leggendo il vero problema "Non riesco a utilizzare la funzione di arresto / riavvio nel menu Start", mi sembra che tu voglia sapere come farlo. La riga di comando è una soluzione, la tastiera è un'altra. Potrebbe aiutare altri utenti che si imbattono in questa domanda e desiderano semplicemente una soluzione semplice da arrestare o riavviare.
msoft,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.