Как проверить результат regedit? - PullRequest
0 голосов
/ 11 ноября 2018

Как проверить значение запроса запроса regedit?

REG QUERY "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Power" /V "HiberbootEnabled" 
IF result == 1 goto turoff
IF result == 0 goto turnon

Ответы [ 3 ]

0 голосов
/ 11 ноября 2018

Если вы просто хотите переключить значение между 1 и 0, что-то в этом направлении может работать для вас, (если у вас есть соответствующие разрешения для доступа к данным значения или их изменения). ) .

@Echo Off
Set "DWord="
For /F "Tokens=3" %%A In ('
    Reg Query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Power" /V "HiberbootEnabled" 2^>Nul
') Do 2>Nul Set /A DWord=1-%%A
If Defined DWord Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Power" /V "HiberbootEnabled" /T REG_DWORD /D %DWord% /F>Nul
0 голосов
/ 11 ноября 2018

В Интернете можно найти множество статей о том, как изменить настройки быстрого запуска 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 /?
0 голосов
/ 11 ноября 2018

Используйте find или findstr, чтобы отфильтровать необходимую строку, а затем используйте for /f, чтобы прочитать вывод

for /f "tokens=3" %%v in ('REG QUERY "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Power" /V "HiberbootEnabled" ^| find "HiberbootEnabled"') do set result=%%v
if "%result%" == "0x1" (
    turnoff
) else (
    turnon
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...