当前位置: 首页 > news >正文

为解决局域网IP、DNS切换的Windows BAT脚本

一、背景

为解决公司普通人员需要切换IP、DNS的情况,于是搞了个windows下的bat脚本,可以对有线网络、无线网络进行切换设置。

脚本内容

@echo off
title 多网络接口IP切换工具

:menu
cls
echo ============================
echo 请选择要配置的网络接口:
echo ============================
echo 1. 有线网络(以太网)
echo 2. 无线网络(Wi-Fi)
echo 3. 刷新DNS缓存
echo 4. 退出
echo ============================
set /p choice=请输入选项(1-3): 

if %choice%==1 goto wiredMenu
if %choice%==2 goto wirelessMenu
if %choice%==3 goto flushDns
if %choice%==4 goto end

:wiredMenu
cls
echo ============================
echo 选择有线网络的IP配置:
echo ============================
echo 1. 使用DHCP自动获取所有设置
echo 2. 使用DHCP自动获取IP地址 (固定DNS)
echo 3. IP配置 1 (192.168.66.101)
echo 4. IP配置 2 (192.168.1.101)
echo 5. 返回主菜单
echo ============================
set /p wiredChoice=请输入选项(1-5): 

if %wiredChoice%==1 goto wiredDhcp
if %wiredChoice%==2 goto wiredDhcpFixedDns
if %wiredChoice%==3 goto wiredIp1
if %wiredChoice%==4 goto wiredIp2
if %wiredChoice%==5 goto menu

:wiredDhcp
echo 正在设置有线网络使用DHCP自动获取IP地址和DNS...
call :applyDhcp "以太网"
goto checkConfigEthernet

:wiredDhcpFixedDns
echo 正在设置有线网络使用DHCP自动获取IP地址,但使用固定DNS...
call :applyDhcpWithFixedDns "以太网" "202.101.202.68" "202.101.224.69"
goto checkConfigEthernet

:wiredIp1
echo 应用有线网络IP配置 1...
call :applyIp "以太网" "192.168.66.101" "255.255.255.0" "192.168.66.1" "202.101.202.68" "202.101.224.69"
goto checkConfigEthernet

:wiredIp2
echo 应用有线网络IP配置 2...
call :applyIp "以太网" "192.168.1.101" "255.255.255.0" "192.168.1.1" "202.101.202.68" "202.101.224.69"
goto checkConfigEthernet

:wirelessMenu
cls
echo ============================
echo 选择无线网络的IP配置:
echo ============================
echo 1. 使用DHCP自动获取所有设置
echo 2. 使用DHCP自动获取IP地址 (固定DNS)
echo 3. IP配置 1 (192.168.1.102)
echo 4. IP配置 2 (192.168.1.103)
echo 5. 返回主菜单
echo ============================
set /p wirelessChoice=请输入选项(1-5): 

if %wirelessChoice%==1 goto wirelessDhcp
if %wirelessChoice%==2 goto wirelessDhcpFixedDns
if %wirelessChoice%==3 goto wirelessIp1
if %wirelessChoice%==4 goto wirelessIp2
if %wirelessChoice%==5 goto menu

:wirelessDhcp
echo 正在设置无线网络使用DHCP自动获取IP地址和DNS...
call :applyDhcp "WLAN"
goto checkConfigWifi

:wirelessDhcpFixedDns
echo 正在设置无线网络使用DHCP自动获取IP地址,但使用固定DNS...
call :applyDhcpWithFixedDns "WLAN" "202.101.202.68" "202.101.224.69"
goto checkConfigWifi

:wirelessIp1
echo 应用无线网络IP配置 1...
call :applyIp "WLAN" "192.168.1.102" "255.255.255.0" "192.168.1.1" "202.101.202.68" "202.101.224.69"
goto checkConfigWifi

:wirelessIp2
echo 应用无线网络IP配置 2...
call :applyIp "WLAN" "192.168.1.103" "255.255.255.0" "192.168.1.1" "202.101.202.68" "202.101.224.69"
goto checkConfigWifi

:applyDhcp
set INTERFACE_NAME=%1
netsh interface ipv4 set address name=%INTERFACE_NAME% source=dhcp
netsh interface ipv4 set dns name=%INTERFACE_NAME% source=dhcp
echo DHCP已启用.
goto :eof

:applyDhcpWithFixedDns
set INTERFACE_NAME=%1
set FIXED_DNS=%2
set SECONDARY_DNS=202.101.202.68
netsh interface ipv4 set address name=%INTERFACE_NAME% source=dhcp
netsh interface ipv4 set dns name=%INTERFACE_NAME% static %FIXED_DNS%
netsh interface ipv4 add dns name=%INTERFACE_NAME% %SECONDARY_DNS% index=2
echo DHCP已启用,并设置了固定的DNS服务器.
goto :eof

:applyIp
set INTERFACE_NAME=%1
set NEW_IP=%2
set SUBNET_MASK=%3
set DEFAULT_GATEWAY=%4
set DNS_SERVER=%5

netsh interface ipv4 set address name=%INTERFACE_NAME% static %NEW_IP% %SUBNET_MASK% %DEFAULT_GATEWAY%
netsh interface ipv4 set dns name=%INTERFACE_NAME% static %DNS_SERVER%
netsh interface ipv4 add dns name=%INTERFACE_NAME% 202.101.202.68 index=2
echo IP配置已更新.
goto :eof

:checkConfigEthernet
echo 显示当前有线网络配置...
netsh interface ip show config name="以太网"
pause
goto menu

:checkConfigWifi
echo 显示当前无线网络配置...
netsh interface ip show config name="WLAN"
pause
goto menu

:flushDns
echo 正在刷新DNS缓存...
ipconfig /flushdns
echo DNS缓存已刷新。
pause
goto menu

:end
echo 程序结束。
pause
exit

请用管理员运行的cmd输入netsh interface ipv4 show interfaces
查看接口与脚本中的接口名称是否一致
在这里插入图片描述

三、自定义脚本

请自行用记事本、notpad++、EmEditor、cudatex对bat脚本进行修改
有线修改位置if %wiredChoice%==
在这里插入图片描述
无线网络修改位置if %wirelessChoice%==

在这里插入图片描述

四、使用

在这里插入图片描述
在这里插入图片描述

相关文章:

  • jupyter notebook更改文件存储路径
  • 多线程-锁升级和对象的内存布局
  • [自动驾驶-传感器融合] 多激光雷达的外参标定
  • 面试基础--MySQL SQL 优化深度解析
  • 新能源汽车工厂如何通过安灯系统实现精益生产
  • [场景题]如何实现购物车
  • 给没有登录认证的web应用添加登录认证(openresty lua实现)
  • PPT小黑第26套
  • Android中的触摸事件是如何传递和处理的
  • 服务器数据恢复—raid5阵列中硬盘掉线导致上层应用不可用的数据恢复案例
  • Linux 文件和目录权限管理详解
  • JavaScript数据结构-Set的使用
  • 宇树科技嵌入式面试题及参考答案(春晚机器人的公司)
  • Idea配置注释模板
  • 什么是安全组及其作用?
  • Zabbix+Deepseek实现AI告警分析(非本地部署大模型版)
  • 【微信小程序】每日心情笔记
  • idea中隐藏目录
  • 深入解析 Nmap 扫描机制的底层原理
  • 海康摄像头接入流媒体服务器实现https域名代理播放
  • 私家车跑“顺风”出事故,意外险赔不赔?
  • 中国物流集团等10家央企11名领导人员职务任免
  • 国税总局上海市税务局通报:收到王某对刘某某及相关企业涉税问题举报,正依法依规办理
  • 商务部回应稀土出口管制问题
  • 中央军委决定调整组建3所军队院校
  • 全国人大常委会今年将初次审议检察公益诉讼法