我在工作时使用批处理脚本在两台代理服务器之间切换。目前我为每个代理提供了2个单独的脚本,我根据这些脚本使用哪个服务器来连接。
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" ^
/v ProxyServer /t REG_SZ /d proxyAddress:port /f
两个脚本都是一样的,只是地址不同。我想创建一个在两个存储地址之间切换的批处理文件(如果正在使用,则将其更改为另一个)。有没有办法从REG_SZ条目返回值并将其评估为存储值?
由于
答案 0 :(得分:3)
我喜欢新的线条和变量;-)并且有模板。
您必须调整Proxy1和Proxy2变量。
:: ToggleProxy.cmd
@Echo off
set "Key=HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
Set "Val=ProxyServer"
Set "Typ=REG_SZ"
Set "Proxy1=proxyAddress1:port1"
Set "Proxy2=proxyAddress2:port2"
for /f "tokens=3" %%R in (
'Reg Query "%Key%" /v %Val% ^|find /i "%Val%"'
) do if "%%~R" equ "%Proxy1%" (
Reg add "%Key%" /v %Val% /t %Typ% /d "%Proxy2%" /f
) else (
Reg add "%Key%" /v %Val% /t %Typ% /d "%Proxy1%" /f
)
答案 1 :(得分:1)
因为新线路无论如何都很无聊(我很抱歉第二线......):
@echo off
for /f "tokens=3 delims= " %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /t REG_SZ ^| findstr "REG_SZ"') do set currentValue=%%a
if "%currentValue%"=="<proxySetting1>"(
REM set proxySetting2 here
) ELSE (
REM set proxySetting1 here
)
使用regQuery
您实际上可以搜索您的键值。需要循环来解析输出并将值读入变量currentValue
。然后,您可以使用此值检查代理服务器是否处于活动状态,并使用上面的命令进行相应更改。
循环说明:
查询的输出对我来说是这样的:
KEY_ROOT_HERE\PATH\TO\KEY
Name REG_TYPE VALUE
所以对于findstr REG_SZ
我们只得到两者的下限。然后我们必须使用空格分隔字符串的第三部分(请参阅开头说明"tokens=3 delims= "
,最长的部分是查询本身,主要取自您的问题。