В Интернете можно найти множество статей о том, как изменить настройки быстрого запуска Windows 8 и более поздних версий Windows.
Вот еще одно решение для пакетного файла с комментариями, которое должно запускаться от имени администратора :
@echo off
setlocal EnableExtensions DisableDelayedExpansion
for /F "skip=2 tokens=1-3" %%A in ('%SystemRoot%\System32\reg.exe query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Power" /v "HiberBootEnabled" 2^>nul') do (
if /I "%%A" == "HiberBootEnabled" set /A "HiberBootEnabled=%%C" & goto EvaluateValue
)
for /F "delims=" %%I in ('ver') do set "WindowsVersion=%%I"
echo Fast startup (hibernate boot) setting not found in Windows registry.
echo/
echo %WindowsVersion% does not support fast startup.
goto EndBatch
:EvaluateValue
rem Toggle the hibernate boot setting.
if %HiberBootEnabled% == 0 (set "HiberBootEnabled=1") else set "HiberBootEnabled=0"
rem Change the hibernate boot setting in registry if batch file
rem is executed with elevated permissions of a local administrator.
%SystemRoot%\System32\reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Power" /f /v "HiberBootEnabled" /t REG_DWORD /d %HiberBootEnabled% >nul
if errorlevel 1 goto ErrorAddValue
if %HiberBootEnabled% == 0 (set "HiberBootEnabled=OFF") else set "HiberBootEnabled=ON"
echo Fast startup (hibernate boot) setting toggled %HiberBootEnabled%.
goto EndBatch
:ErrorAddValue
echo/
echo %~nx0 must be run as administrator to toggle the
echo fast startup (hibernate boot) setting in Windows registry.
:EndBatch
echo/
pause
endlocal
Этот командный файл предназначен для выполнения в Windows XP / Windows Server 2003 и всех более новых версиях Windows. Ничего не делается, если в Windows еще нет значения реестра в двойном слове HiberBootEnabled
из-за отсутствия поддержки быстрого запуска. Он также ничего не делает, если командный файл выполняется без повышенных привилегий локального администратора, необходимых для доступа на запись в HKEY_LOCAL_MACHINE
куст реестра.
Вот также оптимизированная версия, в которой используется простой и замечательный метод для вычитания из 1
текущего значения двойного слова для его переключения, как указано Compo в его ответе.
@echo off
setlocal EnableExtensions DisableDelayedExpansion
for /F "skip=2 tokens=1-3" %%A in ('%SystemRoot%\System32\reg.exe query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Power" /v "HiberBootEnabled" 2^>nul') do (
if /I "%%A" == "HiberBootEnabled" set /A "HiberBootEnabled=1-%%C" & goto ToggleValue
)
for /F "delims=" %%I in ('ver') do set "WindowsVersion=%%I"
echo Fast startup (hibernate boot) setting not found in Windows registry.
echo/
echo %WindowsVersion% does not support fast startup.
goto EndBatch
:ToggleValue
rem Change the hibernate boot setting in registry if batch file
rem is executed with elevated permissions of a local administrator.
%SystemRoot%\System32\reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Power" /f /v "HiberBootEnabled" /t REG_DWORD /d %HiberBootEnabled% >nul
if errorlevel 1 goto ErrorAddValue
if %HiberBootEnabled% == 0 (set "HiberBootEnabled=OFF") else set "HiberBootEnabled=ON"
echo Fast startup (hibernate boot) setting toggled %HiberBootEnabled%.
goto EndBatch
:ErrorAddValue
echo/
echo %~nx0 must be run as administrator to toggle
echo the hibernate boot setting in Windows registry.
:EndBatch
echo/
pause
endlocal
А еще лучше будет пятая строка в соответствии с предложением LotPings :
if /I "%%A" == "HiberBootEnabled" set /A "HiberBootEnabled=!%%C" & goto ToggleValue
Эта строка устанавливает HiberBootEnabled
в 0
, даже если текущее значение больше 1
.
Чтобы понять используемые команды и то, как они работают, откройте окно командной строки, выполните там следующие команды и полностью прочитайте все страницы справки, отображаемые для каждой команды.
call /?
.. объясняет %~nx0
(имя пакетного файла с расширением)
echo /?
endlocal /?
for /?
goto /?
if /?
pause /?
reg /?
reg add /?
reg query /?
rem /?
set /?
setlocal /?