如何验证注册表编辑结果?

时间:2018-11-10 21:57:25

标签: batch-file regedit

如何验证regedit查询请求的值?

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

3 个答案:

答案 0 :(得分:3)

如果您只是想在10之间切换值,则符合以下条件的(只要您具有访问/修改值数据)

@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

答案 1 :(得分:0)

使用findfindstr过滤所需的行,然后使用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
)

答案 2 :(得分:0)

在万维网上可以找到很多有关如何更改Windows 8和更高版本的Windows 8的快速启动设置的文章。

这里是另外一个已批处理的批处理文件解决方案,必须以管理员身份运行

@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 /?