利用bat文件在命令行进行代理切换

发布时间 2023-04-04 15:54:15作者: 薛定谔の三味

命令行里,用python也好,用scoop也好,用git也好,总是需要用代理搞一下。
看到有篇博客写了一个简单的函数,用来做命令行的开关,于是我也仿着人家写了一个bat,用来做cmd的代理开关。
其中遇到了一些小坑,稍微趟了一下,哎,可能power shell就没这么多破事了吧。
批处理的语法实在是太原始了,脑壳疼。
写完这个脚本之后,我把它放到了system32下,起名hp.bat,这样在命令行直接hp就可以开关代理了。这个名字是向人家博客致敬。

@echo off

::一定要用defined检查一下变量是否存在,如果是空的话,变量可能是不存在的,小坑1
if defined HTTP_PROXY goto check
goto set

::判断变量是否为空,我感觉有了上面的,这个check貌似就没用了?
:check
if "%HTTP_PROXY%"=="" goto set
goto clear

:set
set HTTP_PROXY=http://localhost:12345
set HTTPS_PROXY=http://localhost:12345
echo "set proxy"
goto end

:clear
set HTTP_PROXY=
set HTTPS_PROXY=
echo "clear proxy"
goto end

:end

本来是想把这两个set句子放到terminal的新建窗口中,可是怎么也写不对,我是这么写的(下面是错误示范!虽然引号内的语法是正确的):
cmd.exe /k "set http_proxy=http://localhost:12345 & set http_proxy=http://localhost:12345"
结果用curl测试的时候,总说不支持http://localhost:12345(这里有个空格,不知道为啥发布了,就没有了)。我开始以为哪里搞错了,后才仔细一看,原来http_proxy这个值最后有空格。。
我查了好久。。。
算了,跟人家学习,写个开关函数就是了。
后来写脚本也是,想写个or语法,结果它。。没有。。查了一下,说用goto去做。。
行吧。