概述
- 作用
- 修改 Windows 系统中的 hosts 文件,可以实现 插入 或 删除 条目。该脚本允许用户以管理员权限执行,将特定的域名解析到指定的 IP 地址
- 应用场景
非常适用于需要频繁或批量修改 hosts 文件的场景:
- 屏蔽网站、域名重定向、DNS 污染防护
- 广告屏蔽、临时封锁/解除封锁网站
- 多台计算机批量配置 hosts 文件
- 开发环境中需要灵活配置域名解析时
- 注意事项
- hostList.txt 文件为要操作的host条目集;每一行应该是要添加或删除的条目
- 修改host.bat 修改批处理,根据输入的操作指引,把hostList文件里面的条目,依次【添加/删除】到 系统hosts文件中
- !!! 文件需要管理员权限运行 !!!(因为 hosts 文件位于系统的受保护区域)
- !!! 运行之前,最好先备份hosts文件,避免突发情况 !!!
- hosts 路径: C:\Windows\System32\drivers\etc\hosts
应用
- 新建 “hostList.txt” 文件
存储要操作的host条目集,一行一条目;如下:
# 测试环境host 【# 为注释】
127.0.0.1 www.test.com
- 新建 “更改host解析.txt”,并更新为 bat 后缀文件
@echo off
setlocal enabledelayedexpansiontitle 更改host解析::判断管理员权限并获取
net.exe session 1>NUL 2>NUL && (goto as
) || (goto noas
):as
goto start:noas
echo 【您还不是管理员权限,请授权执行】
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit cd /d "%~dp0"
goto start:start::定义 【列表文件、hosts文件、临时文件】 的路径
set "entriesFile=hostList.txt"
set "hostsFile=C:\Windows\System32\drivers\etc\hosts"
set "tempFile=%temp%\hosts_temp.txt"::模拟环境
::set "hostsFile=hosts"cd /d %~dp0:: 检查条目文件是否存在
if not exist "%entriesFile%" (echo 【host条目文件 %entriesFile% 不存在,请检查文件路径】goto end
):: 提示用户选择操作
echo =============== 请选择操作: ===============
echo =============== 1: 插入hosts ===============
echo =============== 2: 删除hosts =============== echo.
echo.
echo 请输入您的选择[1或2]:
choice /c 12 /m "请输入您的选择:" >> nul
:: 根据用户选择执行操作
if errorlevel 2 goto delete_entries & echo 2
if errorlevel 1 goto insert_entries & echo 1:insert_entries
echo 正在插入条目...::在插入条目时,先添加一个空白行,以便与现有条目分隔
echo.>> "%hostsFile%":: 逐行读取条目并插入
for /f "usebackq tokens=*" %%a in ("%entriesFile%") do (findstr /c:"%%a" "%hostsFile%" >nulif errorlevel 1 (echo %%a >> "%hostsFile%"echo 添加: %%a) else (echo 已存在: %%a)
)::结束任务
goto end:delete_entries
echo 正在删除条目...:: 逐行读取条目并删除
for /f "usebackq tokens=*" %%a in ("%entriesFile%") do (echo 清除: %%afindstr /v /c:"%%a" "%hostsFile%" > "%tempFile%" copy /y "%tempFile%" "%hostsFile%" >nul
):: 清理临时文件
if exist "%tempFile%" del "%tempFile%":end
pause
- 若有需要,先备份本地的 “hosts” 文件
路径:C:\Windows\System32\drivers\etc\hosts
- 双击运行 bat 文件即可,可在 “hosts” 文件预览如下:
- 浏览器访问链接(假设端口号为 8888)
http://www.test.com:8888