Come posso spegnere, riavviare o disconnettermi da Windows tramite un file bat?
-
03-07-2019 - |
Domanda
Sto usando 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?
Soluzione
I modi più comuni per utilizzare il shutdown
sono:
-
shutdown -s
& # 8212; Si spegne. -
shutdown -r
& # 8212; Restarts. -
shutdown -l
& # 8212; Si disconnette. -
shutdown -h
& # 8212; Hibernates.Nota: c'è una trappola comune in cui gli utenti pensano che
-h
significhi " help " (cosa che fa per ogni altro programma da riga di comando ... tranneshutdown.exe
, dove significa " ibernazione "). Quindi eseguonoshutdown -i
e spengono accidentalmente i loro computer. Attenzione per questo. -
shutdown -a
& # 8212; " Modalità interattiva " ;. Invece di eseguire un'azione, visualizza una finestra di dialogo della GUI. -
-f
& # 8212; Annulla un precedente comando di spegnimento.
I comandi sopra possono essere combinati con queste opzioni aggiuntive:
-
-t <seconds>
& # 8212; Forza la chiusura dei programmi. Impedisce il blocco del processo di arresto. -
-t 0
& # 8212; Imposta il tempo fino allo spegnimento. Utilizzare-c <message>
per chiudere immediatamente. -
-y
& # 8212; Aggiunge un messaggio di spegnimento. Il messaggio finirà nel registro eventi. -
rundll32
& # 8212; Forza un & Quot; sì & Quot; rispondere a tutte le richieste di spegnimento.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. Qui non sono in un ordine particolare.
- L'opzione <=> da JosephStyons
- Uso di <=> da VonC
- La casella Esegui da < a href = "https://stackoverflow.com/users/14966/dean"> Decano
- Spegnimento remoto da Kip
Altri suggerimenti
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 " più amichevole, dai loro un po 'di tempo " opzione, 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.
Nessuno ha menzionato l'opzione -m
per l'arresto remoto:
shutdown -r -f -m \\machinename
Inoltre:
- Il parametro
-r
provoca un riavvio (che di solito è quello che si desidera su un computer remoto, poiché l'avvio fisico potrebbe essere difficile). - L'opzione
-f
parametro forza il riavvio. - È necessario disporre dei privilegi appropriati per spegnere la macchina remota, ovviamente.
Risposta originale: ottobre 2008
Hai anche ottenuto tutte le " serie: rundll32.exe shell32.dll
"
(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 n
sta per:
- 0 -
LOGOFF
- 1 -
SHUTDOWN
- 2 -
REBOOT
- 4 -
FORCE
- 8 -
POWEROFF
(può essere combinato - > 6 = 2 + 4 FORCE REBOOT
)
Aggiornamento aprile 2015 (più di 6 anni dopo):
1800 INFORMATION sottolinea gentilmente nei commenti :
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 diExitWindows
.
Raymond CHEN ha scritto:
- nel 2004 " Cosa può andare storto quando non si corrisponde alla convenzione di chiamata? " ;:
La firma della funzione richiesta per le funzioni chiamate da
rundll32
è:
void CALLBACK ExitWindowsEx(HWND hwnd, HINSTANCE hinst,
LPSTR pszCmdLine, int nCmdShow);
Ciò non ha impedito alle persone di utilizzare
user32 LockWorkStation
per chiamare funzioni casuali che non erano progettate per essere chiamate dauser32 ExitWindowsEx
, comeRundll32
o <=>.
(oops)
La firma della funzione effettiva per ExitWindowsEx è:
BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReserved);
E per renderlo cristallino:
- nel 2013 " Che cos'è il indicazioni su quando usare rundll32? Facile: non usarlo & Quot ;:
<=> è un residuo di Windows 95 ed è stato deprecato almeno da Windows Vista perché viola molte linee guida di progettazione moderne.
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 di quando caccia in The Oregon Trail .
Quando viene remotato in una macchina (il target è Windows & nbsp; XP comunque; Non sono sicuro del target Windows & nbsp; Vista), sebbene Shutdown 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 + < kbd> Fine come indicato da Owen.
Probabilmente ne sei a conoscenza, ma per ogni evenienza: è molto più semplice digitare shutdown -r
(o qualunque comando ti piaccia) nella " Esegui " box e premi invio.
Salva lasciando file batch in giro ovunque.
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
Lo scriverei in Blocco note o WordPad per un comando di disconnessione di base:
@echo off
shutdown -l
Ciò equivale sostanzialmente a fare clic su Avvia e Disconnetti manualmente, ma è leggermente più veloce se il file batch è pronto.