利用bat文件在命令行進(jìn)行代理切換
命令行里,用python也好,用scoop也好,用git也好,總是需要用代理搞一下。
看到有篇博客寫了一個(gè)簡單的函數(shù),用來做命令行的開關(guān),于是我也仿著人家寫了一個(gè)bat,用來做cmd的代理開關(guān)。
其中遇到了一些小坑,稍微趟了一下,哎,可能power shell就沒這么多破事了吧。
批處理的語法實(shí)在是太原始了,腦殼疼。
寫完這個(gè)腳本之后,我把它放到了system32下,起名hp.bat,這樣在命令行直接hp就可以開關(guān)代理了。這個(gè)名字是向人家博客致敬。
@echo off
::一定要用defined檢查一下變量是否存在,如果是空的話,變量可能是不存在的,小坑1
if defined HTTP_PROXY goto check
goto set
::判斷變量是否為空,我感覺有了上面的,這個(gè)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
本來是想把這兩個(gè)set句子放到terminal的新建窗口中,可是怎么也寫不對,我是這么寫的(下面是錯(cuò)誤示范!雖然引號內(nèi)的語法是正確的):
cmd.exe /k "set http_proxy=http://localhost:12345 & set http_proxy=http://localhost:12345"
結(jié)果用curl測試的時(shí)候,總說不支持http://localhost:12345(這里有個(gè)空格,不知道為啥發(fā)布了,就沒有了)。我開始以為哪里搞錯(cuò)了,后才仔細(xì)一看,原來http_proxy這個(gè)值最后有空格。。
我查了好久。。。
算了,跟人家學(xué)習(xí),寫個(gè)開關(guān)函數(shù)就是了。
后來寫腳本也是,想寫個(gè)or語法,結(jié)果它。。沒有。。查了一下,說用goto去做。。
行吧。

浙公網(wǎng)安備 33010602011771號