यह "इंस्टॉल और रिस्टार्ट नॉट इनस्टॉल एंड शटडाउन" Google खोज पर उच्च दिखाता है। इसलिए, मैंने सोचा कि मुझे एक समाधान जोड़ना चाहिए जो मैंने इस सटीक कष्टप्रद समस्या के लिए लिखना समाप्त कर दिया (लोग मुझे बताते हैं कि Win10 में डिफ़ॉल्ट रूप से यह है, लेकिन मैं Win10 पर नहीं हूं)।
यह दो बैच फ़ाइलों का उपयोग करके काम करता है। पहले वाले को "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)
दूसरे को "शिड्यूल रिबूटअफेयरअपडेट्स.बैट" कहा जाता है:
@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
दोनों फ़ाइलों को C: \ tmp \ Scripts में होना माना जाता है \ _ जब विंडोज आपको "अपडेट अपडेट इंस्टॉल करें" के लिए nags करता है, तो इसे अपडेट इंस्टॉल करना शुरू करें। जबकि यह अद्यतन स्थापित करता है, "शेड्यूलरूटबाउटअपडेट्स.बीएटी" चलाएं।
ऑपरेशन की पृष्ठभूमि:
यदि अपडेट को रिबूट की आवश्यकता होती है, तो कुछ रजिस्ट्री कुंजियाँ (WindowsUpdate reg कुंजी के तहत) मान 0x1 के साथ सेट की जाती हैं।
हम जाँचते हैं कि ये कुंजियाँ पहले बैट फ़ाइल में मौजूद हैं या नहीं। यदि वे करते हैं, तो तुरंत रिबूट करें।
आम तौर पर, मैं अपडेट को ट्रिगर करता हूं जब काम छोड़ने के बारे में (और आधी रात से लगभग 4-5 घंटे पहले)।
दूसरा बल्ला एक निर्धारित कार्य बनाता है (या आधी रात से पहले 5 मिनट चलाने के लिए एक मौजूदा कार्य को अद्यतन करता है) और यह निर्धारित कार्य पहले बल्ले को निष्पादित करता है।
तो ... जबकि सबसे सुरुचिपूर्ण समाधान नहीं है, दो चरणों में (1. ट्रिगर 'अपडेट स्थापित करें' और 2. दूसरा बैट फ़ाइल चलाएं), आपकी मशीन आधी रात के करीब रिबूट करेगी यह मानते हुए कि अपडेट की स्थापना सफल हुई।
इसके अतिरिक्त, आप कार्य शेड्यूलर GUI से 'वेक मशीन को निष्पादित करने के लिए कार्य' सेट कर सकते हैं और साथ ही पिछली बार जो हुआ उसे देखने के लिए निष्पादन रिटर्न कोड की जांच कर सकते हैं।
PS ने Win7 64bit पर परीक्षण किया।