通过Windows批处理脚本批量修改DNS

作者:半点闲

时间:2020.11.21

博客:blog.csdn.net/cg_i

因为我有某种怀旧情结并且我知道很多人都有,难道您不渴望美好的旧时光吗? ——半点闲

序言

在GUI时代,你可能会有疑问,为什么要花时间写批处理文件来修改DNS呢?难道它们不是已经成为过去了吗?难道不能通过鼠标几次轻松点击来完成吗?要想解答您的疑惑,先请您想象这样一种工作场景。如果同时修改近500台电脑的DNS呢?且它们还遍布在全县各乡镇的32家机构里,有些位于山区,最远的机构相距60公里左右,并且上述只能您一个人去完成。是的,只有您。您还会觉得轻松吗?不幸的是,这些不是想像而是我的日常。

前言

我知道您们急着想看代码,为助于您对代码的理解,保证程序能够正常运行,我有必要先交待一下,我所处的生产环境软硬件配置。 操作系统采用微软的WindowsXP Embedded 32位;WindowsXP 32位、Windows Embedded Standard7 (32/64位)、Windows7(32/64位)、Windows10 64位;客户机分为PC与升腾图型终端,其中图型终端是业务主力机,用的是微软的WindowsXP Embedded与Windows Embedded Standard7,采用这个系统的好处是,您对当前系统做的任何修改,每次系统重启都将被抹去,还原到初次安装系统时的状态,要想保存当前配置需要管理员权限及特殊命令(代码中会有体现)。这样就不用担心,一般用户无意修改了系统设置,而导致的系统故障,方便了日常维护与管理,当然PC机不存在上述限制。

软硬件环境介绍的虽然简单,但对理解下面即将给出的代码来说已然足够。下面言归正传,好戏即将登场!

setdns.bat

@ECHO OFF
REM *****************************************************
REM * Author:	高玉涵
REM * File:	setdns.bat
REM * Date:	20201119
REM * Ver:      v1.1
REM * Declare:	10.30关于修改业务终端网络配置的通知
REM *           1.添加DNS:
REM *             11.x.x.xxx
REM *             11.x.x.xxx
REM *           2.测试DNS
REM *           3.终端保存
REM *           4.重启
REM *****************************************************
setlocal enabledelayedexpansion
set ct=

wmic bios get manufacturer|findstr /ic:"centerm">nul&&goto init

goto err

:init
for /f "delims=," %%n in ('Getmac /v /nh /fo csv') do (
	(netsh interface ip set dns name=%%n source=static addr=11.x.x.xxx register=primary&&echo "%%n:DNS1:11.x.x.xxx 成功."&&ping -n 3 127.1>nul)||(echo "%%n 失败"&goto err)
	(netsh interface ip add dns name=%%n addr=11.x.x.xxx&&echo "%%n:DNS2:11.x.x.xxx 成功."&&ping -n 2 127.1>nul)||(echo "%%n 失败"&goto err)
)
(ping test.xxx>nul&&echo "test.hnnx 测试通过."&&ping -n 3 127.1>nul)||(echo "test.xxx 测试失败!"&&ping -n 3 127.1>nul&goto err)

:wr
ewfmgr c: -commit
shutdown -r -t 3 -c "配置完毕,系统重启中...!"
goto end

:err
color 4
echo "配置失败,请及时联系信息科技部!"

:end
pause

代码不多在我的机器上能够完美工作,DNS地址11.x.0.xxx及域名test.xxx请修改为您实际使用的。其中几句关键代码为了避免让您产生疑惑,这里单独拿出来解释一下。

wmic bios get manufacturer|findstr /ic:"centerm">nul&&goto init

这一句的目地是先获得机器的BIOS厂家标识信息,再通过findstr命令查找“centerm”(升腾)标识。找到后,GOTO跳转到指定位置执行接下来的代码,否则语句向下执行遇到GOTO语句跳转到代码结束位置结束程序(本次不考虑PC机。

。这样做的目地是为了下面这一行代码。

ewfmgr c: -commit

ewfmgr命令用于提交并保存当前系统设置,是升腾终端特有的命令。

for /f "delims=," %%n in ('Getmac /v /nh /fo csv') do (
	(netsh interface ip set dns name=%%n source=static addr=11.x.0.xxx register=primary&&echo "%%n:DNS1:11.x.0.xxx 成功."&&ping -n 3 127.1>nul)||(echo "%%n 失败"&goto err)
	(netsh interface ip add dns name=%%n addr=11.x.0.xxx&&echo "%%n:DNS2:11.x.0.xxx 成功."&&ping -n 2 127.1>nul)||(echo "%%n 失败"&goto err)
)

上面的语句是轮询本机所有网络接口,并将指定主、从DNS添加到所有接口上。有些图型终端配有多个网卡,到底网线插在那个网口上不可知。但可以确定只有一个网口在工作,这里采用简单粗爆的方法都给设置上。当然您也可以进一步修改代码,逐个检查接口状态,实现精确操作。我比较懒加之执行结果,达到了预期目地就不费这个心了。

结束语

最后如何将脚本推送到每台机器并自动执行,从而达到无人值守自动化运营,因超出了本文范畴,这里就不在赘叙了。工作中我是极乐意分享,日常任务往往急切,上述代码难免疏漏及缺点,我真诚地希望同行和读者不吝赐教,不胜感激之至。

最新版本

@ECHO OFF
REM *****************************************************
REM * Author:	高玉涵
REM * File:	setdns.bat
REM * Date:	20201119
REM * Ver:      v1.1
REM * LastModify:
REM *			11.30 PC支持
REM * Declare:	10.30关于修改业务终端网络配置的通知
REM *           1.添加DNS:
REM *             11.x.x.xxx
REM *             11.x.x.xxx
REM *           2.测试DNS
REM *           3.终端保存
REM *           4.终端重启
REM *****************************************************
setlocal enabledelayedexpansion
set os=

wmic bios get manufacturer|findstr /ic:"centerm">nul&&set os="ct"&goto init
ver|findstr /ic:"10.0.">nul&&set os="win10"&goto init
ver|findstr /ic:"5.1.">nul&&set os="xp"&goto init
ver|findstr /ic:"6.1.">nul&&set os="win7"&goto init

:init
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' EQU '0' goto setdns

:UACPrompt
echo "正在请求管理员权限..."
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B

:setdns
for /f "delims=," %%n in ('Getmac /v /nh /fo csv') do (
	(netsh interface ip set dns name=%%n source=static addr=11.x.x.xxx register=primary&&echo "%%n:DNS1:11.x.x.xxx 成功."&&ping -n 3 127.1>nul)||(echo "%%n 失败"&goto err)
	(netsh interface ip add dns name=%%n addr=11.x.x.xxx&&echo "%%n:DNS2:11.x.x.xxx 成功."&&ping -n 2 127.1>nul)||(echo "%%n 失败"&goto err)
)
(ping test.hnnx>nul&&echo "test.xxx 测试通过."&&ping -n 3 127.1>nul)||(echo "test.xxx 测试失败!"&&ping -n 3 127.1>nul&goto err)

if !os!=="ct" goto wr
if !os!=="win10" goto win10
if !os!=="xp" goto xp
if !os!=="win7" goto win7

goto err

:wr
ewfmgr c: -commit
shutdown -r -t 3 -c "配置完毕,系统重启中...!"
goto end

:err
color 4
echo "配置失败,请及时联系信息科技部!"
goto end

:xp
:win7
:win10
echo "配置成功!"

:end
pause

 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Windows操作系统中,我们经常需要修改DNS服务器地址,尤其是在一些网络环境下,需要手动更改DNS服务器地址比较麻烦,需要经过多个步骤才能完成。因此,我们可以编写一个Windows一键修改DNS批处理脚本.bat来实现快速修改DNS服务器地址的目的。 首先,我们需要打开bat文件编辑器,然后输入以下内容: echo off title 修改DNS服务器地址 ipconfig /flushdns echo 正在修改DNS服务器地址,请稍等... netsh interface ipv4 add dns "本地连接" 8.8.8.8 index=1 netsh interface ipv4 add dns "本地连接" 8.8.4.4 index=2 echo DNS服务器地址修改完成! pause 以上脚本语句实现了如下功能:先清除DNS缓存,然后添加两个DNS服务器地址,依次为8.8.8.8和8.8.4.4,并打印修改DNS服务器地址完成!最后,加入pause命令,让程序暂停,等待用户确认。 此时,我们可以将修改好的批处理脚本.bat文件保存在本地,然后找到文件夹,双击运行,即可实现一键修改DNS服务器地址,轻松快捷完成操作。 总的来说,Windows一键修改DNS批处理脚本.bat可以帮助我们快速地修改DNS服务器地址,节省时间和精力,提高操作效率,是非常实用的一个工具。 ### 回答2: Windows一键修改DNS批处理脚本(.bat)是一种可自动批量修改Windows系统DNS设置的工具。使用这种脚本能够方便地将多台计算机的DNS地址改为指定的服务器地址,从而提高网络访问速度和安全性。以下是编写此脚本的步骤: 首先,打开文本编辑器,如记事本或Notepad++等,创建一个空白文本文件。然后,将以下代码粘贴到文本文件中: @echo off netsh interface ip set dns name="以太网" source=static addr=192.168.1.1 echo DNS地址已成功修改。 pause 其中,以太网是网络适配器的名称,addr为你的DNS服务器的IP地址。这里的代码是为了设置DNS服务器地址为192.168.1.1。 保存文件时,确保将文件扩展名设置为.bat。例如,将文件名保存为“dns.bat”。 运行该脚本时,双击该.bat文件即可。它将自动修改计算机的DNS服务器设置,然后显示一个“DNS地址已成功修改”的消息。用户按任意键即可退出该脚本。 如果需要修改多台计算机的DNS地址,可以将此批处理脚本复制到每个计算机上,以便进行快速的修改。 ### 回答3: Windows一键修改DNS批处理脚本.bat可用于快速更改计算机的DNS设置,以便更轻松地访问互联网。此脚本通过命令行调用Windows的命令行工具来完成这个任务。 首先,需要在脚本中指定所需的DNS服务器的IP地址。可以将这些地址添加到脚本文件中,或者作为参数传递给脚本。 然后,脚本使用netsh命令来配置计算机的DNS设置。这个命令需要管理员权限才能运行,因此,脚本需要在管理员身份下启动。使用以下命令可以实现: ``` netsh interface ip set dns "本地连接" static DNS地址 ``` 其中,DNS地址是指所需的DNS服务器的IP地址,可以是多个。 脚本还可以添加一些用户友好的选项,例如询问用户是否要还原默认DNS设置等。这些选项可以使用批处理编程中的IF语句和GOTO语句实现。 总的来说,Windows一键修改DNS批处理脚本.bat是一个简单但实用的工具,可以帮助计算机用户更轻松地管理他们的网络设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值