自动更新 Hosts 为最快 IP(Windows/Linux 脚本) · XIU2/CloudflareSpeedTest · Discussion #312

# Windows 脚本

首先下载批处理脚本:... 已内置压缩包中。

然后将其放到 CloudflareST 测速程序所在目录下,双击运行脚本,脚本会申请管理员权限,因此如果你没有关闭 UAC,就会看到用户账户控制提示,选择 [是] 继续。

如果想要在开启 UAC 的情况下不提示 UAC ,可以用我写的开源 UAC 白名单小工具 来解决(依然有管理员权限)。

「 点击查看 [不显示 CMD 黑窗口方式运行 bat 脚本方法] 」

考虑到有些人不想看到 CDM 的黑窗口,可以简单改为默认最小化运行 bat 脚本(只显示在任务栏)。

在 bat 文件头部 @echo off 下一行插入:if not "%~1"=="p" start /min cmd.exe /c %0 p&exit 保存即可。

插入代码后效果如下所示:

@echo off
if not "%~1"=="p" start /min cmd.exe /c %0 p&exit
Setlocal Enabledelayedexpansion
...

首次运行,脚本会提示以下内容:

该脚本的作用为 CloudflareST 测速后获取最快 IP 并替换 Hosts 中的所有 Cloudflare CDN IP。

第一次使用,请先将 Hosts 中所有 Cloudflare CDN IP 统一改为一个 IP。
输入该 Cloudflare CDN IP 并回车(后续不再需要该步骤):

因为脚本替换 IP 时需要先知道被替换的 IP 是什么才行,所以你需要先去 C:\Windows\System32\drivers\etc\hosts 文件中将里面所有 Cloudflare CDN IP 都给改为一个 IP(例如 1.1.1.1,然后再脚本提示中输入该 IP 回车即可,如果 Hosts 文件中以前没有加过 Cloudflare CDN 的 IP,那么你另起一行手动加上个,例如:1.1.1.1 cloudflare.com)。

然后在脚本中输入该 IP,按下回车键继续(IP 会存储在 nowip.txt 文件,以便下次脚本知道要替换哪个 IP)。


随后脚本就会开始测速、备份 Hosts 文件、替换 IP 等操作,提示内容大概如下:

开始测速...
# XIU2/CloudflareSpeedTest vX.X.X

开始延迟测速(模式:TCP IPv4,端口:443):
27936 / 27936 [-------------------------------------------------------------------------------------------------] 100.00%
...

旧 IP 为 X.X.X.X
新 IP 为 Y.Y.Y.Y

开始备份 Hosts 文件(hosts_backup)...
已复制         1 个文件。

开始替换...
完成...

请按任意键继续. . .

## 其他说明

  • 以上脚本只是一个示例,大家可以按需修改,比如在脚本代码中 CloudflareST.exe 后面添加其他参数
  • 每次替换前都会备份 hosts 文件到 hosts_backup 文件。
  • 如果你需要开机自动运行该脚本,只需要右键脚本 - 创建快捷方式,然后将快捷方式移动到 C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 目录下即可。
  • 如果你用了我的 UAC 白名单小工具 生成了免 UAC 的启动快捷方式,那就复制该快捷方式到开机启动目录下即可。

我对 Windows 的批处理脚本并不熟悉,如果有什么问题或者更好的建议,请务必告诉我!