batch-file command - Come posso spegnere, riavviare o disconnettere Windows tramite un file bat?




dos echo (9)

Ho usato Remote Desktop Connection 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 di spegnimento o riavvio.

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


Answers

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

Salva i file batch in uscita ovunque.


Risposta originale: ottobre 2008

Hai anche tutto il " 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 n sta per:

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

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

Aggiornamento aprile 2015 (6+ anni dopo):

1800 INFORMAZIONI gentilmente sottolinea nei commenti :

Non utilizzare rundll32.exe per questo scopo. Si aspetta che la funzione trasmessa 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);

Questo non ha impedito alla gente di usare rundll32 per chiamare funzioni casuali che non sono state progettate per essere chiamate da rundll32 , come user32 LockWorkStation o 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 delle moderne linee guida di progettazione.


Quando remotato su una macchina (obiettivo è Windows XP in ogni caso, non sono sicuro del target Windows Vista), anche se Shutdown nel menu di avvio viene sostituito da Disconnect Session o qualcosa del genere, dovrebbe esserci una chiamata 'Windows Security' che fa anche la stessa cosa di Ctrl + Alt + End come indicato da Owen.


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

Windows ti chiederà cosa vuoi fare, seleziona shutdown o restart.

Per screenshot e anche un video, vedi: https://tinkertry.com/how-to-shutdown-or-restart-windows-over-rdp


Se si è su una macchina remota, si potrebbe anche voler aggiungere l'opzione -f per forzare il riavvio. In caso contrario, la sessione potrebbe chiudersi e un'applicazione ostinata può bloccare il sistema.

Lo uso ogni volta che voglio forzare un riavvio immediato:

shutdown -t 0 -r -f

Per una più amichevole opzione "dai loro un po 'di 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.


Un altro piccolo suggerimento: quando si avvia 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 in seguito ti lascia al prompt dei comandi.

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

Inoltre, dal momento che è su un timer, si ottiene la stessa emozione come si fa quando si caccia in The Oregon Trail .


Scriverò questo in Notepad o WordPad per un comando di disconnessione di base:

@echo off
shutdown -l

Questo è praticamente lo stesso di fare clic su start e logoff manualmente, ma è leggermente più veloce se il file batch è pronto.


I metodi più comuni per utilizzare il comando shutdown sono:

  • shutdown -s - Spegne.
  • shutdown -r - Riavvia.
  • shutdown -l - Si disconnette.
  • shutdown -h - Sospende.

    Nota: c'è un errore comune in cui gli utenti pensano -h significa "aiuto" (che fa per ogni altro programma da riga di comando ... eccetto shutdown.exe , dove significa "ibernazione"). Quindi eseguono shutdown -h e accidentalmente spengono i loro computer. Attenzione per quello.

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

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

I comandi sopra possono essere combinati con queste opzioni aggiuntive:

  • -f - Forza l'uscita dei programmi. Impedisce che il processo di spegnimento si blocchi.
  • -t <seconds> - Imposta il tempo fino allo spegnimento. Usa -t 0 per spegnere immediatamente.
  • -c <message> - Aggiunge un messaggio di spegnimento. Il messaggio finirà nel registro eventi.
  • -y - Forza una risposta "sì" a tutte le query di arresto.

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

Voglio assicurarmi che anche altre risposte veramente buone siano menzionate insieme a questa. Eccoli senza alcun ordine particolare.


echo. È stato detto abbastanza.

Se ti serve in una singola riga, usa il & . Per esempio,

echo Line 1 & echo. & echo line 3

produrrebbe come:

Line 1

line 3

Ora, dì che vuoi qualcosa di un po 'più elaborato, ...

set n=^&echo.
echo hello %n% world

Uscite

hello
world

Quindi basta inserire un %n% ogni volta che si desidera una nuova riga in un'istruzione echo. Questo è più vicino al tuo \n usato in varie lingue.

Abbattersi

set n= imposta la variabile n uguale a:

^ Annulla il prossimo simbolo da seguire:

& Mezzi per fare un altro comando sulla stessa linea. Non ci importa di errorlevel (è un'eco per gridare forte), quindi non è necessario && .

echo. Continua la frase di eco.

Tutto questo funziona perché puoi effettivamente creare variabili che sono codice e usarle all'interno di altri comandi. È un po 'come una funzione ghetto, poiché batch non è esattamente il più avanzato dei linguaggi di scripting della shell. Funziona solo perché il cattivo utilizzo delle variabili da parte del batch, non designando tra ints, char, float, stringhe, ecc. Naturalmente.

Se sei furbo, potresti farlo funzionare con altre cose. Ad esempio, utilizzarlo per echeggiare una scheda

set t=^&echo.     ::there are spaces up to the double colon




windows batch-file command-line restart shutdown