中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-03 12:58
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 【原创】:网关自动切换器。 查看 1,642 回复 3
楼 主 【原创】:网关自动切换器。 发表于 2007-02-16 02:27 ·  中国 浙江 温州 电信
初级用户
★★
积分 154
发帖 67
注册 2006-10-31 00:50
19年会员
UID 68933
性别 男
状态 离线
看论坛里很多朋友在找这个东西,前段时间我要用的时候也找不到.所以就写了这个.还有很多漏洞修要改进,不过基本上是能用了.现在给那些需要的朋友发出来吧.

****************** 代码段 ********************

@Title IP网关自动切换器 By 韩和&Color 0a&&Mode CON Cols=45 Lines=15 &&Echo OFF
If Exist config.ini Del config.ini
@Echo 程序执行完毕该文件会被自动删除!>config.ini&Ipconfig|Find "IP Address">>config.ini&&Ipconfig|Find "Default Gateway" >>config.ini&&Ipconfig/all|Find "Ethernet adapter">>config.ini

::::::::::::::::: 定义详细的变量 :::::::::::::::::

Set First=192.168
Set Scend1=1
Set Scend2=0
Set Mask=255.255.255.0
Set Gate1=192.168.1.200
Set Gate2=192.168.0.200

::::::::::::::::: 获取本机的IP地址信息 :::::::::::::::::

For /f "SkIp=2 Tokens=13" %%d in (config.ini) do Set Gate=%%d
For /f "SkIp=1 Tokens=15" %%c in (config.ini) do Set Ip=%%c
For /f "SkIp=3 Tokens=3,4 Delims=: " %%a in (config.ini) do Set Name=%%a %%b
@Echo %Ip% >>config.ini
For /f "SkIp=4 Tokens=4 Delims=./ " %%f in (config.ini) do Set Shree=%%f
@Echo ⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙
@Echo ⊙你机器当前网络信息如下: ⊙
@Echo ⊙连接名称: %Name% ⊙
@Echo ⊙使用的IP: %Ip% ⊙
@Echo ⊙使用的网关: %Gate% ⊙
@Echo ⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙

::::::::::::::::: 判断本机所在的网段 :::::::::::::::::

IF /i "%Gate%"=="192.168.1.200" (Goto A_INTERNAME) Else (IF /i "%Gate%"=="192.168.0.200" (Goto B_INTERNAME))


::::::::::::::::: 1 网段的处理 :::::::::::::::::

:A_INTERNAME
@Echo.
@Echo 正在进行处理,请耐心等候...
Netsh interface Ip Set address "%Name%" static %First%.%Scend2%.%Shree% %Mask% %Gate2% 1
@Cls
@Echo 您的网关已经切换成功.当前网关(0).
For /f "SkIp=7 Tokens=15" %%k in ('Ipconfig') do Echo 你修改后的网络信息如下: %%k
For /f "SkIp=9 Tokens=13" %%g in ('Ipconfig') do Echo 你修改后的网络信息如下: %%g
Del config.ini
@Echo.
@Echo 线路已经成功切换,按任意键退出程序.
@pause>nul
@exit

::::::::::::::::: 0 网段的处理 :::::::::::::::::

:B_INTERNAME
@Echo 正在进行处理,请耐心等候...
Netsh interface Ip Set address "%Name%" static %First%.%Scend1%.%Shree% %Mask% %Gate1% 1
@Cls
@Echo 您的网关已经切换成功.当前网关(1).
For /f "SkIp=7 Tokens=15" %%k in ('Ipconfig') do Echo 你修改后的网络信息如下: %%k
For /f "SkIp=9 Tokens=13" %%g in ('Ipconfig') do Echo 你修改后的网络信息如下: %%g
Del config.ini
@Echo.
@Echo 线路已经成功切换,按任意键退出程序.
@pause>nul
@exit

********************* 结束 *********************

代码 没有加密,有需要的朋友可以自己改下.我这个写出来只是为了我自己方便.
没有考虑大众使用的方便..
以后有机会再改进吧..

[ Last edited by newaifi on 2007-2-16 at 10:50 PM ]
2 发表于 2007-02-16 06:15 ·  中国 湖南 衡阳 电信
初级用户
积分 24
发帖 10
注册 2007-02-03 06:54
19年会员
UID 78499
性别 男
状态 离线
不知道这么长一段代码有啥用。。。试用了一下,只知道切换192.168这样的网关,假如是别的网关,根本就不会切换,这也叫自动?还不如手动更改来得方便。
3 发表于 2007-02-16 22:56 ·  中国 浙江 温州 电信
初级用户
★★
积分 154
发帖 67
注册 2006-10-31 00:50
19年会员
UID 68933
性别 男
状态 离线
本人已经说过了。写这个只是为了自己使用方便。并没有考虑大众的需求,有需要的可以拿去改。

至于为什么只能改 192.168 段.我想有点常识的都应该明白.有些东西想实现完全自动根本就没可能. 就算能识别你的IP.程序也未必知道你想改那个网段.也不可能知道你存在几个网段.所以这个东西我在上面就用 ::::::: 符号进行了申明是变量,需要用户自己去改.坐享其成的话你什么都学不到..
4 发表于 2007-02-24 16:51 ·  中国 广东 肇庆 四会市 电信
中级用户
★★
积分 384
发帖 189
注册 2005-10-19 13:12
20年会员
UID 43709
性别 男
状态 离线
Originally posted by windows9x at 2007-2-16 06:15:
不知道这么长一段代码有啥用。。。试用了一下,只知道切换192.168这样的网关,假如是别的网关,根本就不会切换,这也叫自动?还不如手动更改来得方便。



这个可以先取得当前的网段...保存...

然后再换网段...

最后需要恢复的时候再取出之前保存的网段还原不就OK了...
论坛跳转: