中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 【原创】:网关自动切换器。 上一主题 | 下一主题
newaifi
初级用户





积分 154
发帖 67
注册 2006-10-31
状态 离线
『楼 主』:  【原创】:网关自动切换器。

看论坛里很多朋友在找这个东西,前段时间我要用的时候也找不到.所以就写了这个.还有很多漏洞修要改进,不过基本上是能用了.现在给那些需要的朋友发出来吧.

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

@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 ]

2007-2-16 02:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
windows9x
初级用户





积分 24
发帖 10
注册 2007-2-3
状态 离线
『第 2 楼』:  

不知道这么长一段代码有啥用。。。试用了一下,只知道切换192.168这样的网关,假如是别的网关,根本就不会切换,这也叫自动?还不如手动更改来得方便。

2007-2-16 06:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
newaifi
初级用户





积分 154
发帖 67
注册 2006-10-31
状态 离线
『第 3 楼』:  

本人已经说过了。写这个只是为了自己使用方便。并没有考虑大众的需求,有需要的可以拿去改。

至于为什么只能改 192.168 段.我想有点常识的都应该明白.有些东西想实现完全自动根本就没可能. 就算能识别你的IP.程序也未必知道你想改那个网段.也不可能知道你存在几个网段.所以这个东西我在上面就用 ::::::: 符号进行了申明是变量,需要用户自己去改.坐享其成的话你什么都学不到..

2007-2-16 22:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
voiL
中级用户





积分 384
发帖 189
注册 2005-10-19
状态 离线
『第 4 楼』:  



  Quote:
Originally posted by windows9x at 2007-2-16 06:15:
不知道这么长一段代码有啥用。。。试用了一下,只知道切换192.168这样的网关,假如是别的网关,根本就不会切换,这也叫自动?还不如手动更改来得方便。

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

然后再换网段...

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

2007-2-24 16:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: