吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 716|回复: 21
上一主题 下一主题
收起左侧

[其他原创] [batch] 写了个自动切换内外网的脚本

[复制链接]
跳转到指定楼层
楼主
hoochanlon 发表于 2024-11-28 14:51 回帖奖励

当前状况&优化:经常需要在同一台主机上进行内外网切换,处理生产域控需要进内网,平时浏览网页需要外网,已存在的内网与外网脚本,每次都要分别点一次不方便。

设计思路:判断是否为静态或自动获取,然后根据“自动获取”设置静态IP,如果是静态IP就设置自动获取,以达到自动识别与切换的目的。

源码及地址:

@echo off
cls

:: 定义接口名称
set interface="以太网"

:: 创建一个临时文件存储 netsh 输出
set temp_file=%temp%\dhcp_status_output.txt

:: 获取接口配置信息并保存到文件
netsh interface ip show config name=%interface% > "%temp_file%"

:: 初始化变量
set dhcp_status=

:: 逐行读取文件,查找 "DHCP 已启用"
for /f "tokens=2 delims=:" %%a in ('findstr /c:"DHCP 已启用" "%temp_file%"') do (
    set dhcp_status=%%a
)

:: 清理前导空格
for /f "tokens=* delims= " %%b in ("%dhcp_status%") do set dhcp_status=%%b

:: 显示结果,检查 DHCP 状态
echo 当前 DHCP 状态: "%dhcp_status%"

:: 判断当前模式并执行切换
if /i "%dhcp_status%"=="是" (
    echo 检测到当前为 DHCP 模式,正在切换到静态 IP...
    netsh interface ip set address name=%interface% source=static addr=172.16.1.55 mask=255.255.255.0 gateway=172.16.1.254 >nul 2>nul
    netsh interface ip set dnsservers %interface% static 172.16.1.6 validate=no >nul 2>nul
    echo 已切换到静态 IP 配置。
) else (
    echo 检测到当前为静态 IP 模式,正在切换到 DHCP...
    netsh interface ip set address name=%interface% source=dhcp >nul 2>nul
    @rem netsh interface ip set dnsservers %interface% dhcp >nul 2>nul
    netsh interface ip set dnsservers %interface% static 192.168.1.250 primary >nul 2>nul
    netsh interface ip add dnsservers %interface% 114.114.114.114 index=2 >nul 2>nul
    echo 已切换到 DHCP 配置。
)

:: 删除临时文件
del "%temp_file%"

@REM pause
:: 等待 3 秒后退出
@REM timeout /t 3 /nobreak >nul

代码效果:

静态设置成DHCP

PixPin_2024-11-28_14-09-11.PNG

DHCP设置成静态

PixPin_2024-11-28_14-12-14.PNG

免费评分

参与人数 6吾爱币 +6 热心值 +6 收起 理由
baihuxianzi + 1 + 1 用心讨论,共获提升!
woyucheng + 1 + 1 谢谢@Thanks!
yanglinman + 1 谢谢@Thanks!
假好人。 + 1 + 1 谢谢@Thanks!
qazwsxon + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
debug_cat + 2 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
goblack 发表于 2024-11-28 15:37
思考!震惊。这玩意儿竟然值得用IDE编写。。。

这是单文件自动判断处理。相当于“自锁开关”,一键处理

我是写了多个文件,运行不同的脚本一键切换为DHCP或者不同网段,或者同时添加多个网段

如果切换很频繁的时候,也不是太容易判断当前网络位置,所以后来我还是写了个小软件,常驻图标显示当前网络是红、黄、绿区。。。避免在公网访问了内网资源导致内网DNS信息泄露这些问题。
推荐
goblack 发表于 2024-11-28 17:08

https://github.com/Icingworld/NetTool
https://github.com/nek0us/IPv4-Config-Switch

看了下网上类似的有。。。
不过我的不一样。目前的版本还是太LOW,比如网络都是写死的,IP都是改配置文件的。。。
如果公开分享,我来做的话,除了现有的图标,方案要可以自定义而不是固定3个方案,还有快捷键
沙发
baishibukele 发表于 2024-11-28 15:01
3#
dxxiong 发表于 2024-11-28 15:35
不错,有用,支持一下~
5#
goblack 发表于 2024-11-28 15:39
话说我还有个建议。。。。尾部pause之后不一定是结束。毕竟已经pause了没必要再往后面添加timeout。
可以直接goto 开头,反复一键切换
6#
silent117 发表于 2024-11-28 15:55
如果你忘了当前网络环境,不如按数字选择
在选择界面显示当前的网络环境,好做判断。
7#
土鸡炖蘑菇 发表于 2024-11-28 15:58
直接添加两个ip不就好了吗,省的切换了,不过外网dhcp的话 有可能会ip冲突罢了
8#
 楼主| hoochanlon 发表于 2024-11-28 16:15 |楼主
goblack 发表于 2024-11-28 15:37
思考!震惊。这玩意儿竟然值得用IDE编写。。。

这是单文件自动判断处理。相当于“自锁开关”,一键处理
...

常驻图标显示当前网络是红、黄、绿区,是在任务栏加小点图标吗?pause和timeout是做代码调试的时候用了,所以没删,单纯注释。网络位置,工位上有内外网线标识的。
9#
goblack 发表于 2024-11-28 16:18
hoochanlon 发表于 2024-11-28 16:15
常驻图标显示当前网络是红、黄、绿区,是在任务栏加小点图标吗?pause和timeout是做代码调试的时候用了, ...

对的。。。。随意用VB写了个小软件。。不到20KB。upx下就3KB.。。。。

不是怕插网线搞错,是经常切换,在用的时候搞错当前网络
10#
guihai3 发表于 2024-11-28 16:19
学习学习
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-28 19:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表