【Windows】一键自动设置IP及DNS的批处理脚本

Overview

本批处理脚本适用于Windows自动更改本地连接/以太网等的IP和DNS设置
可以很方便地用于同一计算机在不同网络下(如公司、学校、家里等)切换IP
具体IP及DNS设置可在bat文件中自行预设
代码的主体部分主要参考了[1],并在此基础上进行了修改和优化

Batch File

::Author:Tony Chang 
::2015.12.20
::Thanks D-小苏
::Mender:Alex Pan
::2018.08.26

@echo off

::preset IP
set Net_IP_Diy=172.16.38.20
set Net_MASK=255.255.255.0
set Net_gateway=172.16.38.1

::preset DNS
set Net_dnsPra=61.128.192.68
set Net_dnsOrder=61.128.192.97

title 一键切换IP地址及DNS

:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else (
goto gotAdmin
)

:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"

"%temp%\getadmin.vbs"
exit /B

:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
:-------------------------------------- 

:start

echo.
echo.
echo *********************快速修改本地IP地址*********************
:Set_localTemp
setlocal enabledelayedexpansion

:Set_NetConnectionID
rem 获取设置网络连接名称
echo.
echo **********************选择网络连接名称**********************
echo.
set "str=DefaultIPGateway^,IPAddress^,DNSServerSearchOrder^,IPSubnet^,DHCPEnabled"
for /f "skip=1tokens=1*" %%i in ('wmic Nic where "Manufacturer<>'Microsoft' and NetConnectionStatus='2'" get Index^,NetConnectionID^') do (
    for /f "tokens=1* delims=:" %%j in ("%%j") do (
        set $%%i=%%j

    echo.
    echo 适配器_名_NName: %%j
    set "NetConnectionName=%%j"

        for /f "tokens=1-3delims={}," %%a in ('wmic Nicconfig where "Index='%%i'" get %str% /value') do (
            for /f %%c in (%%c) do if /i "%%a" == "DNSServerSearchOrder=" set "DNS2=%%c"
            for /f %%c in ("%%a%%~b") do set "%%c"
        )
        if /i "!DHCPEnabled!" == "TRUE" (
          echo 适配器_IP_模式 : 自动
        ) else echo 适配器_IP_模式 : 手动 
    IF not defined Net_IP set Net_IP=!IPAddress! 
    echo 适配器_IP_地址 : !IPAddress!        预置_IP_地址 : !Net_IP_Diy!
    IF not defined Net_MASK set Net_MASK=!IPSubnet!
    echo 适配器_子网掩码: !IPSubnet!       预置_子网掩码: !Net_MASK!
    IF not defined Net_gateway set Net_gateway=!DefaultIPGateway!
    echo 适配器_默认网关: !DefaultIPGateway!       预置_默认网关: !Net_gateway!
    IF not defined Net_dnsPra set Net_dnsPra=!DNSServerSearchOrder!
    echo 适配器_首选_DNS: !DNSServerSearchOrder!     预置_首选_DNS: !Net_dnsPra!
    IF defined dns2 set Net_dns2=!DNS2! &echo 适配器_备用_DNS :!DNS2!        预置_备用_DNS: !Net_dns2!
    )
)
echo.

echo.
echo ============请输入数字选择下一步操作:============
echo ============1:设置IP为%Net_IP_Diy% =============
echo ============2:设置IP为DHCP自动获取 =============
echo ============3:设置DNS为预置dns     =============
echo ============4:设置DNS为自动获取    =============
echo ============       按Q直接退出      =============
set /P var=":"
if %var%==1 goto ipstatic
if %var%==2 goto ipdhcp
if %var%==3 goto dnsstatic
if %var%==4 goto dnsdhcp
if %var%==q exit
echo 错误:非法输入!
goto start

:ipstatic
echo %NetConnectionName%
echo 设置IP...
netsh interface ipv4 set address name=%NetConnectionName% source=static %Net_IP_Diy% %net_MASK% %Net_gateway%
ipconfig /flushdns
echo **IP设置为%Net_IP_Diy%,子网掩码设置为%net_MASK%,默认网关设置为%Net_gateway%,设置成功**
echo ------------------------------------------
goto start

:ipdhcp
netsh interface ip set address name=%NetConnectionName% source=dhcp
ipconfig /flushdns
echo **IP设置为DHCP获取,设置成功**
echo ------------------------------------------
goto start

:dnsstatic
echo 设置DNS...
netsh interface ipv4 set dns name=%NetConnectionName% static addr=%Net_dnsPra% register=PRIMARY
netsh interface ipv4 add dns name=%NetConnectionName% addr=%Net_dnsOrder% index=2
ipconfig /flushdns
echo **首选DNS设置为%Net_dnsPra%,备用DNS设置为%Net_dnsOrder%,设置成功**
echo ------------------------------------------
goto start

:dnsdhcp
echo 清除DNS...
netsh interface ip delete dns %NetConnectionName% all
ipconfig /flushdns
echo **DNS设置为自动获取,设置成功**
echo ------------------------------------------
goto start

修改预设IP&DNS后,保存为.bat文件即可使用,根据提示进行操作

希望能够对大家有所帮助~


Reference

[1] 一个一键修改IP设置的BAT脚本——Safe_Point

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答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是一个简单但实用的工具,可以帮助计算机用户更轻松地管理他们的网络设置

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值