Isso aparece bem na pesquisa do Google "Instalar e reiniciar, não instalar e desligar". Por isso, pensei em adicionar uma solução que acabei escrevendo para esse problema irritante (as pessoas me dizem que o Win10 tem isso por padrão, mas eu não estou no Win10).
Isso funciona usando dois arquivos em lotes. O primeiro é chamado "rebootAfterUpdates.bat"
@echo OFF
@setlocal ENABLEEXTENSIONS
@set REBOOT_KEY="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired"
@SET REGDWORD=REG_DWORD
@SET VALUEVAL=0x1
@REM skip=4 may be required on some versions of Windows
@FOR /F "usebackq skip=2 tokens=1-3" %%A IN (`reg query %REBOOT_KEY% /s 2^>nul`) DO (
@IF %%B EQU %REGDWORD% (
@IF %%C EQU %VALUEVAL% (
call :REBOOT
)
)
)
:NOREBOOT
@Echo No reboot required
exit /b 36877
REM 36877 is 0x900D (i.e. Good, no reboot required)
:REBOOT
@ECHO Here We REBOOT
SHUTDOWN -r -f -t 10
exit /b 3059719
REM 3059719 is 0x2EB007 (i.e. REBOOT was triggered)
O segundo é chamado "scheduleRebootAfterUpdates.bat":
@schtasks /query /TN RebootAfterUpdates > doh
@findstr /B /I "RebootAfterUpdates" doh >nul
@if %errorlevel%==0 goto :update
@goto :create
:update
@del doh
@SCHTASKS /Change /TN RebootAfterUpdates /SD %DATE%
@echo Task updated to execute today
@goto :exitBat
:create
@del doh
@SCHTASKS /Create /SC ONCE /TN RebootAfterUpdates /TR "C:\tmp\Scripts\rebootAfterUpdates.bat" /ST 23:55 /sd %DATE% /ru SYSTEM /f
@echo Task created. Set the "Wake to Execute Flag" through Task Scheduler GUI
:exitBat
@exit /b
Supõe-se que ambos os arquivos estejam em C: \ tmp \ Scripts \ Quando o Windows pede para você "Instalar atualizações", deixe-o começar a instalar as atualizações. Enquanto instala atualizações, execute "scheduleRebootAfterUpdates.bat".
Antecedentes da operação:
Se as atualizações exigirem uma reinicialização, algumas chaves do Registro (na chave de registro WindowsUpdate) serão definidas com o valor 0x1.
Verificamos se essas chaves existem no primeiro arquivo bat. Se o fizerem, reinicie imediatamente.
Normalmente, aciono atualizações quando estou prestes a sair do trabalho (e cerca de 4-5 horas antes da meia-noite).
O segundo bastão cria uma tarefa agendada (ou atualiza uma tarefa existente para ser executada 5 minutos antes da meia-noite) e essa tarefa agendada executa o primeiro bastão.
Portanto ... embora não seja a solução mais elegante, em duas etapas (1. ative 'Instalar atualizações' e 2. execute o segundo arquivo bat), sua máquina será reiniciada quase meia-noite, assumindo que a instalação das atualizações foi bem-sucedida.
Além disso, você pode definir a 'Wake machine to execute task' na GUI do Agendador de tarefas, bem como verificar o código de retorno da execução para ver o que aconteceu da última vez.
PS Testado em Win7 64bit.