通过批处理文件查询注册表密钥值



我正在尝试创建一个简单的批次文件,该文件使用reg query命令检查注册表密钥中的值,特别是

HKCUSoftwareMicrosoftWindowsCurrentVersionInternet Settings ProxyEnable key。

如果我运行此命令:

reg query "HKCUSoftwareMicrosoftWindowsCurrentVersionInternet Settings" /v ProxyEnable /f 0x1 /d

它返回以下内容:

HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionInternet Settings ProxyEnable REG_DWORD 0x0

好像不接受我的 /f 搜索字段,因为我期望该命令输入不返回结果,因为我对该密钥的值是 0x0 。<<

我尝试使用" 0x1 "和其他组合使用引号,但是想知道我是否做错了。

预先感谢!

,因为您似乎只想知道启用代理是否已打开,您可以使用此方法:

@Echo Off
Set "RR=HKCU"
Set "RK=SoftwareMicrosoftWindowsCurrentVersionInternet Settings"
Set "RV=ProxyEnable"
For /F "Skip=1 Tokens=2*" %%A In ('Reg Query "%RR%%RK%" /V "%RV%" 2^>Nul'
) Do If %%~B Gtr 0 Echo(%%B
Pause

例如,如果您想将其关闭,请将其更改为这样的东西:

@Echo Off
Set "RR=HKCU"
Set "RK=SoftwareMicrosoftWindowsCurrentVersionInternet Settings"
Set "RV=ProxyEnable"
For /F "Skip=1 Tokens=2*" %%A In ('Reg Query "%RR%%RK%" /V "%RV%" 2^>Nul'
) Do If %%~B Equ 0 Reg Add "%RR%%RK%" /V "%RV%" /T REG_DWORD /D 0x1 /F>Nul

尽管从技术上讲,您可以运行此操作:

@Echo Off
Set "RR=HKCU"
Set "RK=SoftwareMicrosoftWindowsCurrentVersionInternet Settings"
Set "RV=ProxyEnable"
Reg Add "%RR%%RK%" /V "%RV%" /T REG_DWORD /D 0x1 /F>Nul

编辑

首先使用Squashman建议并改进Zett42的方法,因为以下EnableHttp1_1 REG_DWORD 0x0将发送到Find ::

@Echo Off
Set "RR=HKCU"
Set "RK=SoftwareMicrosoftWindowsCurrentVersionInternet Settings"
Set "RV=ProxyEnable"
Reg Query "%RR%%RK%" /F 1 /E /T REG_DWORD|Find /I "%RV%">Nul 2>&1||(
    Reg Add "%RR%%RK%" /V "%RV%" /T REG_DWORD /D 0x1 /F>Nul)

reg query 用于读取注册表数据,而不是设置或更改注册表数据
要更改注册表数据替换 query Add

reg add "HKCUSoftwareMicrosoftWindowsCurrentVersionInternet Settings" /v ProxyEnable  /d 0x1 /f

最新更新