之前聊到『Windows 修改 Hosts』的步骤,相信已经能够帮助很多普通用户学会如何在自己的电脑上修改 Hosts 了,但是修改 Hosts 毕竟不是一个基本技能,即使我们再努力的科普,总有人不会。

而作为网站管理员经常收到的反馈是,一些内部网站切换了网络环境之后打不开等等,针对这些对互联网认知都只停留在社交看剧游戏等开箱即用的小白,我们真的很难跟他们解释什么是 Hosts,为什么网站突然打不开,他们满脑子只有一个想法:你的网站出问题了。

你是我司专门雇来写 Bug 的吧

为了让这群非技术人员闭嘴,最好的方法就是能够简化操作流程,减少操作步骤。嗯没错,技术人员马上就能脱口而出:写个脚本。

考虑到大多数普通用户都是使用 Windows 系统的,那就写一个针对 Windows 平台的脚本呗,添加 Hosts 是一个非常简单的操作,打开文件追加文本即可,所以我决定直接写批处理脚本。

@echo off

set "raw=185.199.108.133 raw.githubusercontent.com"
set "gist=140.82.112.4 gist.github.com"
set "api=140.82.112.6 api.github.com"

call :add
call :add
call :add "%raw%"
call :add "%gist%"
call :add "%api%"

goto :eof
:add
findstr /i /c:"%~1" C:\Windows\System32\Drivers\etc\hosts
if errorlevel 1 (
    >>C:\Windows\System32\Drivers\etc\hosts echo,%~1
)

这段代码可以分为三个部分。

首先定义了 3 个变量,分别对应 3 条 Hosts 内容,这里我以 Github 的部分域名举例。

然后将其按顺序追加,我在这里先追加两个换行,再追加 Hosts 内容,其实换行并不是必要的,因为默认情况下,Hosts 文件在末尾留一个空行,而追加换行的原因是为了避免由于用户个人操作文件末尾空行不在了导致直接追加到原 Hosts 末行造成的 Hosts 失效的问题。

最后就是根据路径找到文件进行操作。

脚本编写完成后,保存并修改文件格式为 .bat 后缀,即批处理(Batch)文件类型。将这个文件挂到网站上,当检测到用户无法正常访问某些域名时,提示下载并双击运行这个脚本,即可自动帮用户完成添加 Hosts 的操作。

我不修电脑