运用windows批处理实现一键科学上网F4u免费翻墙网
F4u免费翻墙网
@echo offF4u免费翻墙网
if defined converted goto :convertedF4u免费翻墙网
F4u免费翻墙网
set ConverterPath=%temp%\HostsGeter_CodeConverter.vbsF4u免费翻墙网
set ConverterOutput=%temp%\HostsGeter_GBK.batF4u免费翻墙网
F4u免费翻墙网
echo inputpath="%~0" >%ConverterPath%F4u免费翻墙网
echo outputpath="%ConverterOutput%" >>%ConverterPath%F4u免费翻墙网
echo set stm2=createobject("ADODB.Stream") >>%ConverterPath%F4u免费翻墙网
echo stm2.Charset ="utf-8" >>%ConverterPath%F4u免费翻墙网
echo stm2.Open >>%ConverterPath%F4u免费翻墙网
echo stm2.LoadFromFile inputpath >>%ConverterPath%F4u免费翻墙网
echo readfile = stm2.ReadText >>%ConverterPath%F4u免费翻墙网
echo stm2.Close >>%ConverterPath%F4u免费翻墙网
echo Set Stm1 =CreateObject("ADODB.Stream") >>%ConverterPath%F4u免费翻墙网
echo Stm1.Type = 2 >>%ConverterPath%F4u免费翻墙网
echo Stm1.Open >>%ConverterPath%F4u免费翻墙网
echo Stm1.Charset ="GBK" >>%ConverterPath%F4u免费翻墙网
echo Stm1.Position = Stm1.Size >>%ConverterPath%F4u免费翻墙网
echo Stm1.WriteText "set converted=y" ^& vbcrlf >>%ConverterPath%F4u免费翻墙网
echo Stm1.WriteText readfile >>%ConverterPath%F4u免费翻墙网
echo Stm1.SaveToFile outputpath,2 >>%ConverterPath%F4u免费翻墙网
echo Stm1.Close >>%ConverterPath%F4u免费翻墙网
%ConverterPath% && %ConverterOutput%F4u免费翻墙网
goto :eofF4u免费翻墙网
F4u免费翻墙网
:convertedF4u免费翻墙网
F4u免费翻墙网
chcp 936F4u免费翻墙网
:: 更改cmd窗口代码页至 936(GBK)F4u免费翻墙网
F4u免费翻墙网
clsF4u免费翻墙网
%1 %2F4u免费翻墙网
ver|find " 5.">nul &&goto :stF4u免费翻墙网
echo 正在进行 UAC 提权...F4u免费翻墙网
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :st","","runas",1)(window.close)&goto :eofF4u免费翻墙网
:stF4u免费翻墙网
F4u免费翻墙网
clsF4u免费翻墙网
F4u免费翻墙网
@REM HostsGet Version0.4F4u免费翻墙网
cd /d %~dp0F4u免费翻墙网
F4u免费翻墙网
set LogFilePath=%temp%\HostsGeter_log.txtF4u免费翻墙网
set DLScriptPath=%temp%\downloadhosts.vbsF4u免费翻墙网
set DLPath=%windir%\system32\drivers\etc\hosts_downloadedF4u免费翻墙网
set BackupDir=%windir%\system32\drivers\etcF4u免费翻墙网
set HostsPath=%windir%\system32\drivers\etc\hostsF4u免费翻墙网
F4u免费翻墙网
set LogToFile=^>^>%LogFilePath% 2^>^&1F4u免费翻墙网
set EchoAndLog=call :echoandlogF4u免费翻墙网
echo. %LogToFile%F4u免费翻墙网
echo ==========[%date% %time%]========== %LogToFile%F4u免费翻墙网
echo 日志文件:F4u免费翻墙网
echo %LogFilePath%F4u免费翻墙网
echo.F4u免费翻墙网
F4u免费翻墙网
echo iLocal=LCase("%DLPath%") > %DLScriptPath% ||(F4u免费翻墙网
call :error downloadhosts.vbs 文件创建/写入失败.F4u免费翻墙网
)F4u免费翻墙网
echo iRemote=LCase("https://coding.net/u/scaffrey/p/hosts/git/raw/master/hosts") >> %DLScriptPath%F4u免费翻墙网
echo Set xPost=createObject("Microsoft.XMLHTTP") 'Set Post = CreateObject("Msxml2.XMLHTTP") >> %DLScriptPath%F4u免费翻墙网
echo xPost.Open "GET",iRemote,0 >> %DLScriptPath%F4u免费翻墙网
echo xPost.Send() >> %DLScriptPath%F4u免费翻墙网
echo set sGet=createObject("ADODB.Stream") >> %DLScriptPath%F4u免费翻墙网
echo sGet.Mode=3 >> %DLScriptPath%F4u免费翻墙网
echo sGet.Type=1 >> %DLScriptPath%F4u免费翻墙网
echo sGet.Open() >> %DLScriptPath%F4u免费翻墙网
echo sGet.Write xPost.ResponseBody >> %DLScriptPath%F4u免费翻墙网
echo sGet.SaveToFile iLocal,2 >> %DLScriptPath%F4u免费翻墙网
F4u免费翻墙网
%EchoAndLog% 开始从 GitHub 中下载 hosts 文件...F4u免费翻墙网
if exist %DLPath% del %DLPath% /s /q %LogToFile%F4u免费翻墙网
%DLScriptPath% || call :error hosts 文件下载失败.F4u免费翻墙网
del %DLScriptPath% /s /q %LogToFile%F4u免费翻墙网
if not exist %DLPath% call :error hosts 文件下载失败.F4u免费翻墙网
%EchoAndLog% 下载完成.F4u免费翻墙网
echo.F4u免费翻墙网
F4u免费翻墙网
if exist %HostsPath% (F4u免费翻墙网
call :backuphostsF4u免费翻墙网
) else (F4u免费翻墙网
%EchoAndLog% (原 hosts 文件不存在,跳过备份)F4u免费翻墙网
)F4u免费翻墙网
%EchoAndLog% 正在替换 hosts 文件...F4u免费翻墙网
move %DLPath% %HostsPath% %LogToFile% || call :error hosts 文件替换失败.F4u免费翻墙网
%EchoAndLog% hosts 文件已替换.F4u免费翻墙网
echo.F4u免费翻墙网
F4u免费翻墙网
%EchoAndLog% 正在刷新系统 DNS 缓存...F4u免费翻墙网
ipconfig /flushdns %LogToFile% || call :error DNS 缓存刷新失败.F4u免费翻墙网
%EchoAndLog% DNS 缓存已刷新.F4u免费翻墙网
echo.F4u免费翻墙网
%EchoAndLog% 【操作全部完成!】F4u免费翻墙网
echo.F4u免费翻墙网
F4u免费翻墙网
echo 按任意键访问 google.com.hk 进行测试,如取消,请直接关闭本窗口F4u免费翻墙网
pause >nulF4u免费翻墙网
start https://www.google.com.hkF4u免费翻墙网
echo 已经帮你访问 google.com.hk 如可以访问则替换成功.F4u免费翻墙网
echo.F4u免费翻墙网
goto :endF4u免费翻墙网
F4u免费翻墙网
:backuphostsF4u免费翻墙网
%EchoAndLog% 正在备份原 hosts 文件...F4u免费翻墙网
set "bakfilename=hosts_%date%_%time:~0,8%.bak"F4u免费翻墙网
set bakfilename=%bakfilename:/=-%F4u免费翻墙网
set bakfilename=%bakfilename:\=-%F4u免费翻墙网
set bakfilename=%bakfilename::=-%F4u免费翻墙网
set bakfilename=%bakfilename: =_%F4u免费翻墙网
copy %HostsPath% %BackupDir%\%bakfilename% %LogToFile% || call :error hosts 文件备份失败.F4u免费翻墙网
%EchoAndLog% 原 hosts 文件已备份到 %BackupDir%\%bakfilename%.F4u免费翻墙网
echo.F4u免费翻墙网
goto :eofF4u免费翻墙网
F4u免费翻墙网
:errorF4u免费翻墙网
echo ======================F4u免费翻墙网
%EchoAndLog% 错误:%*F4u免费翻墙网
start %LogFilePath%F4u免费翻墙网
echo 已打开日志文件F4u免费翻墙网
goto :endF4u免费翻墙网
F4u免费翻墙网
:echoandlogF4u免费翻墙网
echo %*F4u免费翻墙网
echo %* %LogToFile%F4u免费翻墙网
goto :eofF4u免费翻墙网
F4u免费翻墙网
:endF4u免费翻墙网
echo 按任意键关闭F4u免费翻墙网
pause >nulF4u免费翻墙网
exitF4u免费翻墙网
F4u免费翻墙网
|