在 Windows 系统中,可以使用批处理(.bat)结合netsh 命令来修改计算机的 DNS 设置,以下是几种常用场景的示例。
1. 修改指定网络接口的 DNS(推荐)
首先需要知道你的网络接口名称,以太网”、“WLAN”或“本地连接”,可以通过以下命令查看:
netsh interface ip show config
输出示例:
适配器 以太网:
...
接口名称: 以太网假设接口名称为“以太网”,将主 DNS 改为114.114.114.114,备用 DNS 改为8.8.8.8。
@echo off chcp 65001 >nul title 修改 DNS :: 请根据实际情况修改接口名称 set INTERFACE=以太网 set PRIMARY_DNS=114.114.114.114 set SECONDARY_DNS=8.8.8.8 echo 正在修改接口 "%INTERFACE%" 的 DNS... netsh interface ip set dns "%INTERFACE%" static %PRIMARY_DNS% netsh interface ip add dns "%INTERFACE%" %SECONDARY_DNS% index=2 echo DNS 修改完成! pause
注意:
netsh interface ip set dns 用于设置主 DNS(会覆盖原有设置)。
netsh interface ip add dns 用于添加备用 DNS,index=2 表示第二优先级。
2. 设置 DNS 为自动获取(DHCP)
如果希望恢复自动获取 DNS:
netsh interface ip set dns "以太网" dhcp
3. 同时修改 IPv4 和 IPv6(如有需要)
IPv6 的 DNS 类似,使用netsh interface ipv6:
netsh interface ipv6 set dns "以太网" static 2001:4860:4860::8888 netsh interface ipv6 add dns "以太网" 2001:4860:4860::8844 index=2
4. 自动获取接口名称(不写死)
通过命令自动找到活动的网络接口(例如第一个包含“以太网”或“WLAN”的接口):
@echo off
for /f "tokens=3*" %%i in ('netsh interface show interface ^| find "已连接"') do set INTERFACE=%%j
echo 检测到活动接口:%INTERFACE%注意:这是简单的匹配,实际需根据netsh interface show interface 的输出格式调整。
5. 完整示例:一键修改+刷新DNS缓存
@echo off
chcp 65001 >nul
title 修改 DNS 为 114.114.114.114 / 8.8.8.8
:: 查找第一个已连接的以太网或 WLAN 接口(可根据需要修改)
for /f "tokens=3*" %%a in ('netsh interface show interface ^| findstr /i "已连接 连接"') do (
set INTERFACE=%%b
goto :setdns
)
:setdns
if "%INTERFACE%"=="" (
echo 未找到已连接的网络接口!
pause
exit /b
)
echo 当前活动接口:%INTERFACE%
netsh interface ip set dns "%INTERFACE%" static 114.114.114.114
netsh interface ip add dns "%INTERFACE%" 8.8.8.8 index=2
echo DNS 已设置。
:: 可选:刷新 DNS 缓存
ipconfig /flushdns
echo DNS 缓存已刷新。
pause重要提示
1、管理员权限:修改网络配置需要管理员权限,可以在批处理文件上右键 → “以管理员身份运行”,或者使用以下代码在脚本开头自动提权(需要额外文件,但简单做法是手动以管理员运行)。
2、接口名称:不同系统或语言下接口名称可能不同(例如中文Win10显示“以太网”,英文显示“Ethernet”),可以先执行netsh interface show interface 确认名称。
3、安全:建议使用公共 DNS(如阿里223.5.5.5、腾讯119.29.29.29、114DNS、Google)。
如果还有具体问题(如设置特定接口、批处理开机自启等),欢迎继续询问。
文章摘自:https://idc.huochengrm.cn/dns/25952.html
评论