[英]Switch Registry Value from Batch File
My requirement is that I need to change the value of a registry in particular this key "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"
Value= ProxyEnable
我的要求是我需要更改注册表的值,特别是此键"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"
Value = ProxyEnable
The REG_DWORD
( 0
or 1
) needs to be switched. 需要切换REG_DWORD
( 0
或1
)。 ie SWITCH: IF proxy ENABLED then DISABLE IF proxy DISABLED then ENABLE 即SWITCH:IF代理启用然后禁用如果代理禁用然后启用
To Enable 启用
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1 /f
To Disable 要禁用
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 0 /f
. 。
@echo off
setlocal
set key="HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
set value=ProxyEnable
set newdata=0
for /f "tokens=2* skip=3" %%a in ('reg query %key% /v %value%') do (
set type=%%a
set data=%%b
)
echo %data% | find /i "%newdata%" > nul
if %errorlevel% equ 0 (echo %newdata% already present
) else (
echo reg add %key% /v %value% /t %type% /d %newdata% /f
)
this is the code so far, unable to modify it. 这是到目前为止的代码,无法修改它。
@echo off
setlocal
set key="HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
set value="ProxyEnable"
set newdata=0x0
For /f "tokens=2,3 skip=2 delims= " %%a in ('reg query %key% /v %value%') do (
set type=%%a
set data=%%b
)
echo %data% | find /i "%newdata%" > nul
if %errorlevel% equ 0 (echo %data% already present & reg add %key% /v %value% /t %type% /d 1 /f
) else (
echo %data% already present & reg add %key% /v %value% /t %type% /d 0 /f
)
To toggle/switch the value from 1 to 0 and 0 to 1, some simple maths helps simplify things: set /a newdata=1-data
要将值从1切换/切换为0并将0切换为1,一些简单的数学有助于简化操作: set /a newdata=1-data
Here's how I would do it: 我是这样做的:
@echo off
setlocal
set key="HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
set value=ProxyEnable
for /f "tokens=2* skip=2" %%a in ('reg query %key% /v %value%') do (
set data=%%b
)
set /a newdata=1-data
reg add %key% /v %value% /d %newdata% /f
I thing you have to use skip=2
: 我必须使用skip=2
:
@echo off
set key="HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
set "value=ProxyEnable"
for /f "tokens=2* skip=2" %%a in ('reg query %key% /v %value%') do call:Treat %%a %%b
exit/b
:Treat
echo %2 | find /i "1" && echo already present || reg add %key% /v %value% /t %1 /d 1 /f
If you want to disable it if present just replace the echo already present
by : 如果你想要禁用它,只要替换echo already present
的echo already present
:
reg add %key% /v %value% /t %1 /d 0 /f
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.