script_tool_for_windows.bat Windows 环境下的 hosts 一键部署脚本
这篇文章主要介绍了script_tool_for_windows.bat Windows 环境下的 hosts 一键部署脚本,需要的朋友可以参考下
我们提供了一系列工具让您除了手动以 复制/粘贴 的方式部署和更新 hosts 之外,有一种方便、一键式的方式来应用我们的 hosts 。
我们现有的工具可以在下列平台上工作:
Microsoft Windows (.bat script; Qt GUI tool; console (service type) tool)
另外,我们还推荐使用跨平台的 Hozz 来管理、自动更新 hosts 。
目前,我们共有:
Hozz: 跨平台的 hosts 自动 管理/更新 工具。是 @ppoffice 的项目。
项目主页
项目Github主页 https://github.com/racaljk/hosts/tree/master/hosts_tools
HostTool: Windows 环境下的 hosts 自动更新应用,使用 C++ 构建, GUI 基于 Qt 。由 @racaljk 贡献。
HostToolforMac: Mac 环境下的 hosts 自动部署更新应用(适用于 OS X 10.10 或以上),基于 Swift 开发。由 @ZzzM 贡献。
HostsToolforWindows: Windows console环境下的 hosts 自动更新应用(作为系统服务),使用 C++ 构建。由 @Too-Naive 贡献。
script_tool_for_windows.bat: Windows 环境下的 hosts 一键部署脚本,由 @redapple0204 与 @lizongzeshunshun 贡献。以及 @lideming 提供的重要更新。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | @ echo off if defined converted goto :converted set ConverterPath=%temp%\HostsGeter_CodeConverter.vbs set ConverterOutput=%temp%\HostsGeter_GBK.bat echo inputpath= "%~0" >%ConverterPath% echo outputpath= "%ConverterOutput%" >>%ConverterPath% echo set stm2=createobject( "ADODB.Stream" ) >>%ConverterPath% echo stm2.Charset = "utf-8" >>%ConverterPath% echo stm2.Open >>%ConverterPath% echo stm2.LoadFromFile inputpath >>%ConverterPath% echo readfile = stm2.ReadText >>%ConverterPath% echo stm2.Close >>%ConverterPath% echo Set Stm1 =CreateObject( "ADODB.Stream" ) >>%ConverterPath% echo Stm1. Type = 2 >>%ConverterPath% echo Stm1.Open >>%ConverterPath% echo Stm1.Charset = "GBK" >>%ConverterPath% echo Stm1.Position = Stm1.Size >>%ConverterPath% echo Stm1.WriteText "set converted=y" ^& vbcrlf >>%ConverterPath% echo Stm1.WriteText readfile >>%ConverterPath% echo Stm1.SaveToFile outputpath,2 >>%ConverterPath% echo Stm1.Close >>%ConverterPath% %ConverterPath% && %ConverterOutput% goto :eof :converted chcp 936 :: 更改cmd窗口代码页至 936(GBK) cls %1 %2 ver|find " 5." >nul &&goto :st echo 正在进行 UAC 提权... mshta vbscript:createobject( "shell.application" ).shellexecute( "%~s0" , "goto :st" , "" , "runas" ,1)(window.close)&goto :eof :st cls @REM HostsGet Version0.4 cd /d %~dp0 set LogFilePath=%temp%\HostsGeter_log.txt set DLScriptPath=%temp%\downloadhosts.vbs set DLPath=%windir%\system32\drivers\etc\hosts_downloaded set BackupDir=%windir%\system32\drivers\etc set HostsPath=%windir%\system32\drivers\etc\hosts set LogToFile=^>^>%LogFilePath% 2^>^&1 set EchoAndLog=call :echoandlog echo . %LogToFile% echo ==========[%date% %time%]========== %LogToFile% echo 日志文件: echo %LogFilePath% echo . echo iLocal=LCase( "%DLPath%" ) > %DLScriptPath% ||( call :error downloadhosts.vbs 文件创建/写入失败. ) echo iRemote=LCase( "https://raw.githubusercontent.com/racaljk/hosts/master/hosts" ) >> %DLScriptPath% echo Set xPost=createObject( "Microsoft.XMLHTTP" ) ' Set Post = CreateObject( "Msxml2.XMLHTTP" ) >> %DLScriptPath% echo xPost.Open "GET" ,iRemote,0 >> %DLScriptPath% echo xPost.Send() >> %DLScriptPath% echo set sGet=createObject( "ADODB.Stream" ) >> %DLScriptPath% echo sGet.Mode=3 >> %DLScriptPath% echo sGet. Type =1 >> %DLScriptPath% echo sGet.Open() >> %DLScriptPath% echo sGet. Write xPost.ResponseBody >> %DLScriptPath% echo sGet.SaveToFile iLocal,2 >> %DLScriptPath% %EchoAndLog% 开始从 GitHub 中下载 hosts 文件... if exist %DLPath% del %DLPath% /s /q %LogToFile% %DLScriptPath% || call :error hosts 文件下载失败. del %DLScriptPath% /s /q %LogToFile% if not exist %DLPath% call :error hosts 文件下载失败. %EchoAndLog% 下载完成. echo . if exist %HostsPath% ( call :backuphosts ) else ( %EchoAndLog% (原 hosts 文件不存在,跳过备份) ) %EchoAndLog% 正在替换 hosts 文件... move %DLPath% %HostsPath% %LogToFile% || call :error hosts 文件替换失败. %EchoAndLog% hosts 文件已替换. echo . %EchoAndLog% 正在刷新系统 DNS 缓存... ipconfig /flushdns %LogToFile% || call :error DNS 缓存刷新失败. %EchoAndLog% DNS 缓存已刷新. echo . %EchoAndLog% 【操作全部完成!】 echo . echo 按任意键访问 google.com.hk 进行测试,如取消,请直接关闭本窗口 pause >nul echo 已经帮你访问 google.com.hk 如可以访问则替换成功. echo . goto :end :backuphosts %EchoAndLog% 正在备份原 hosts 文件... set "bakfilename=hosts_%date%_%time:~0,8%.bak" set bakfilename=%bakfilename:/=-% set bakfilename=%bakfilename:\=-% set bakfilename=%bakfilename::=-% set bakfilename=%bakfilename: =_% copy %HostsPath% %BackupDir%\%bakfilename% %LogToFile% || call :error hosts 文件备份失败. %EchoAndLog% 原 hosts 文件已备份到 %BackupDir%\%bakfilename%. echo . goto :eof :error echo ====================== %EchoAndLog% 错误:%* start %LogFilePath% echo 已打开日志文件 goto :end :echoandlog echo %* echo %* %LogToFile% goto :eof :end echo 按任意键关闭 pause >nul exit |