在寝室上内网真的是很闹心呀~稍微迟点开机,IP 地址就被别人抢去了。昨晚九点放学后,一直等到十点半才连上,实在忍无可忍了!
IP 被抢后解决方法无非就是找一个没被占用的地址,但手工去测试 256 个地址太折磨人了,早些时候我们班的两个同学就分别用 Java 和 C# 来实现过类似的小工具。但解决这样的小问题有点杀鸡用牛刀的感觉,不符合我的性格^_^,我当然还是用批处理来解决。
批处理中核心的两条语句就是:
设置静态IP地址 netsh int ip set address "本地连接" static IP地址 子网掩码 网关 1 设置域名解析器 netsh int ip set dns "本地连接" static 域名解析器地址 primary
程序使用时需要提供一个网关地址,为了方便大家使用,在 XP 和 Vista 系统能自动检测网关地址,如果正确的话直接敲一个回车就可以了。下面是批处理的代码,大家只要将下面的代码复制到记事本里,另存为 sip.bat,双击即可运行。
:: 自动查找可用 IP :: 适用于浙江工商大学 :: by redraiment @echo off setlocal enabledelayedexpansion if NOT "%1"=="" goto scan :: 检测可识别的系统版本 :: XP ver | find "[版本 5" if NOT ERRORLEVEL 1 ( set SV=XP set CG='"ipconfig|find /I "gate""' set TS=13 ) :: VISTA ver | find "[版本 6" if NOT ERRORLEVEL 1 ( set SV=VISTA set CG='"ipconfig|find /V "::"|find "网关""' set TS=15 ) if NOT "%SV%"=="" (for /F "tokens=%TS%" %%i in (%CG%) do set g=%%i) echo 您的网关可能是:!g! set /P gateway=如果不正确请重新输入,否则输入回车: if "!gateway!"=="" set gateway=!g! echo %0 !gateway! pause exit :scan for /l %%d in (2,1,253) do ( echo 正在验证 %~n1.%%d 是否被占用 ... ping -w 10 -n 1 %~n1.%%d | find /I "TTL" if ERRORLEVEL 1 ( echo 设置本地IP ... netsh int ip set address "本地连接" static %~n1.%%d 255.255.255.0 %1 1 echo 测试连接网关 ... ping -w 10 -n 1 %1 | find /I "TTL" if NOT ERRORLEVEL 1 ( echo 恭喜,%~n1.%%d 可用! echo 设置域名解析器 ... netsh int ip set dns "本地连接" static 210.33.88.1 primary exit ) ) )
下面是在 XP 环境下运行的效果图,它将本地 IP 设置成 10.230.71.6:
更高效的方法请参见新一篇《内网IP自动获取V2》
版权声明
请尊重原创作品。转载请保持文章完整性,并以超链接形式注明原始作者“redraiment”和主站点地址,方便其他朋友提问和指正。
联系方式
我的邮箱,欢迎来信(redraiment@gmail.com)
我的Blogger(子清行):http://redraiment.blogspot.com/
我的Google Sites(子清行):https://sites.google.com/site/redraiment
我的CSDN博客(梦婷轩):http://blog.csdn.net/redraiment
我的百度空间(梦婷轩):http://hi.baidu.com/redraiment