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主页
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 提供的重要更新。
@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 start https://www.google.com.hk 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
上一篇: 用批处理上传文件到ftp目录下的实现方法
推荐阅读
-
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
-
script_tool_for_linux.bash: Linux 环境下的 hosts 一键部署脚本
-
windows环境下配置python脚本的开机启动
-
windows编写的shell脚本到linux环境下运行
-
windows环境下运行java的脚本
-
Windows环境下写Linux sh脚本的一次挖坑和填坑
-
Windows环境下实现Jenkins部署的教程详解
-
script_tool_for_windows.bat Windows 环境下的 hosts 一键部署脚本
-
Windows下Python的Django框架环境部署及应用编写入门
-
基于Shell脚本的Linux下Javaweb项目一键部署