![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 18:08 |
共 48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 批处理能判断相同的IP吗? |
| 可打印版本 864 / 10 |
| 第1楼 ka56 | 发表于 2008-03-11 13:07 |
| 中级用户 发帖 129 积分 234 | |
|
批处理能判断相同的IP吗? 在网上经常要遇到ADSL换IP的情况,我希望能实现这样的功能:用批处理断网,重连,显示当前IP,比较当前IP与前一次IP是否相同,相同的话再断网重拨...直到换个新的IP
我只会做前面的,大虾指导下,谢谢!! rasdial /disconnect sleep 7000 rasdial adsl 123456@adsl 123456 sleep 150 ipconfig sleep 6000 |
|
| 第2楼 pooronce | 发表于 2008-03-11 13:45 |
| 中级用户 发帖 250 积分 484 | |
|
如果有cygwin的支持,引进sed命令的话还是比较容易的:
如果仅用cmd命令的话,麻烦一点,这样: 192.168是过滤本地IP,如果没本地可以去掉,有其它本地ip呢,就再追加过滤进去。 这样会多抓一个空格在IP地址的前面,不过不影响使用,或者再去掉空格也行。 当然一定要抓准的话呢,略改一下"tokens=14 delims=: "就行了,不过这个14就不一定能在你机器上通用了,得自己确认是不是第14个位置了。 IP地址抓到了变量里,剩下的的对比并确认是否需要重拨,相信你自己也能完成了。 |
|
| 第3楼 ka56 | 发表于 2008-03-11 14:10 |
| 中级用户 发帖 129 积分 234 | |
Originally posted by pooronce at 2008-3-11 13:45: |
|
| 第4楼 ka56 | 发表于 2008-03-11 15:26 |
| 中级用户 发帖 129 积分 234 | |
|
很多不懂的,有哪位虾虾能不厌烦的写下实现这一功能的完整代码,不尽感谢!!
|
|
| 第5楼 pooronce | 发表于 2008-03-11 15:35 |
| 中级用户 发帖 250 积分 484 | |
|
你先到cmd下ipconfig一下,让我看看显示的情况如何
|
|
| 第6楼 ka56 | 发表于 2008-03-11 15:50 |
| 中级用户 发帖 129 积分 234 | |
Originally posted by pooronce at 2008-3-11 15:35: Microsoft Windows XP (C) 版权所有 1985-2001 Microsoft Corp. C:\Documents and Settings\Administrator>rasdial /disconnect 命令已完成。 正在连接到 VNET_PPPOE... 正在验证用户名及密码... 正在网络上注册您的计算机... 已连接 VNET_PPPOE。 命令已完成。 C:\Documents and Settings\Administrator>ipconfig Windows IP Configuration Ethernet adapter 本地连接: Connection-specific DNS Suffix . : IP Address. . . . . . . . . . . . : 192.168.0.2 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : PPP adapter Vnet_PPPoE: Connection-specific DNS Suffix . : IP Address. . . . . . . . . . . . : 125.78.56.190 Subnet Mask . . . . . . . . . . . : 255.255.255.255 Default Gateway . . . . . . . . . : 125.78.56.190 |
|
| 第7楼 pooronce | 发表于 2008-03-11 16:59 |
| 中级用户 发帖 250 积分 484 | |
|
试试吧:
[ Last edited by pooronce on 2008-3-11 at 05:30 PM ] |
|
| 第8楼 abcd | 发表于 2008-03-11 17:16 |
| 银牌会员 发帖 739 积分 1,436 | |
|
if not pc%goon%=pcy goto :eof
少= |
|
| 第9楼 terse | 发表于 2008-03-11 17:19 |
| 银牌会员 发帖 946 积分 2,404 | |
|
@echo off
for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|find /i "Address"') do set ip1=%%i :aaa rasdial /disconnect&&rasdial adsl 123456@adsl 123456 for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|find /i "Address"') do set ip2=%%i if "%ip1%"=="%ip2%" goto aaa pause |
|
| 第10楼 pooronce | 发表于 2008-03-11 17:29 |
| 中级用户 发帖 250 积分 484 | |
Originally posted by abcd at 2008-3-11 05:16 PM: 哦, 没注意~ [ Last edited by pooronce on 2008-3-11 at 05:31 PM ] |
|
| 第11楼 ka56 | 发表于 2008-03-11 17:34 |
| 中级用户 发帖 129 积分 234 | |
Originally posted by terse at 2008-3-11 17:19: 谢谢大虾,已经实现了!!!! :)) 谢谢pooronce!!!谢谢回复的兄弟,以上帮助我的朋友,喜欢QQ号的话,我将会拿个QQ相赠... 加下延时,得到最终的代码: @echo off for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|find /i "Address"') do set ip1=%%i echo 现在的IP%ip1% :aaa rasdial /disconnect sleep 5000 rasdial adsl 123456@qzadsl 123456 for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|find /i "Address"') do set ip2=%%i echo 重拨后的IP%ip2% if "%ip1%"=="%ip2%" goto aaa pause |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |