批处理脚本在两个代理之间切换

时间:2017-01-19 08:34:45

标签: batch-file proxy

我在工作时使用批处理脚本在两台代理服务器之间切换。目前我为每个代理提供了2个单独的脚本,我根据这些脚本使用哪个服务器来连接。

reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" ^
/v ProxyServer /t REG_SZ /d proxyAddress:port /f

两个脚本都是一样的,只是地址不同。我想创建一个在两个存储地址之间切换的批处理文件(如果正在使用,则将其更改为另一个)。有没有办法从REG_SZ条目返回值并将其评估为存储值?

由于

2 个答案:

答案 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= ",最长的部分是查询本身,主要取自您的问题。