Board logo

标题: 请教,批处理实现ADSL上网IP不重复? [打印本页]

作者: iconspy     时间: 2007-4-18 06:35    标题: 请教,批处理实现ADSL上网IP不重复?

请教,关于用批处理实现用ADSL上网使自身IP不重复的问题? 关于用批处理实现用ADSL上网使自身IP不重复的问题?
想实现这样功能的批处理,运行批处理时
将当前IP写入到记录IP地址的文本文件中,
然后断开ADSL连接,经过一段延时后重新连接ADSL,
然后对比连接好后的IP是否是以前用这的IP,即查找当前IP是否在记录IP地址的文本文件中
如果是用过的IP则重复上述操作,重新拨号
现在我的批处理如下(没能实现对比功能):
@echo off
echo 正在断开连接......
rasdial adsl /disconnect
echo 正在清理系统垃圾文件,请稍等......
del /f /s /q %systemdrive%\*.tmp
del /f /s /q %systemdrive%\*._mp
del /f /s /q %systemdrive%\*.log
del /f /s /q %systemdrive%\*.gid
del /f /s /q %systemdrive%\*.chk
del /f /s /q %systemdrive%\*.old
del /f /s /q %systemdrive%\recycled\*.*
del /f /s /q %windir%\*.bak
del /f /s /q %windir%\prefetch\*.*
rd /s /q %windir%\temp & md %windir%\temp
del /f /q C:\documents and Settings\Administrator\Cookies\*.*
del /f /q C:\documents and Settings\Administrator\Cookies\*.*
del /f /q C:\documents and Settings\Administrator\Cookies\*.*
del /f /s /q "C:\documents and Settings\Administrator\Temporary Internet Files\*.*"
del /f /s /q "R:\Temporary Internet Files\*.*"
del /f /s /q "C:\documents and Settings\Administrator\Local Settings\Temporary Internet Files\*.*"
del /f /s /q "C:\documents and Settings\Administrator\Local Settings\Temp\*.*"
del /f /s /q "C:\documents and Settings\Administrator\recent\*.*"
echo 清理系统垃圾完成!
echo. & pause
echo 正在连接网络......
rasdial adsl adslxxxxxx password
ipconfig|findstr /c:"IP Address" >>IPList.txt
Rasdial "adsl adslxxxxxx" /DISCONNECT>nul
Rasdial "adsl adslxxxxxx" adslxxxxxx password>nul
ipconfig|findstr /c:"IP Address"
echo. & pause

向请各位高手请教!
ipconfig|findstr /c:"IP Address" >>IPList.txt输入到文本文件中后,目前内容是这样的:
IP Address. . . . . . . . . . . . : 192.168.1.111         IP Address. . . . . . . . . . . . : 219.152.91.135         IP Address. . . . . . . . . . . . : 192.168.1.111         IP Address. . . . . . . . . . . . : 219.152.88.109         IP Address. . . . . . . . . . . . : 192.168.1.111

内容是两个IP地址,因为系统中有两个连接,一个本地连接,一个ADSL连接
与运行ipconfig看到的两个连接的信息是一样的,我不知道用批处理怎样只取得adsl连接的IP,即外网IP,所以用了这种办法!
作者: everest79     时间: 2007-4-18 09:34
楼主,你真伟大
作者: iconspy     时间: 2007-4-19 03:52    标题: 怎么没人理我呀!

怎么没人理我呀?是不是我放错了版面?请管理员指正!
如果批处理不好实现,用脚本也可以呀,请大家帮帮忙!:(
作者: everest79     时间: 2007-4-19 09:56
你用断线重连的方法想获得上次相同IP太困难了点,这取决于ISP的POOL大小与在线人数,是否有序列策略,像广州,最大的IP池有大于5K个,这样很难
作者: iconspy     时间: 2007-4-19 11:08


  Quote:
Originally posted by everest79 at 2007-4-18 08:56 PM:
你用断线重连的方法想获得上次相同IP太困难了点,这取决于ISP的POOL大小与在线人数,是否有序列策略,像广州,最大的IP池有大于5K个,这样很难

Sorry,可能是我没说明白,我不是想获得相同的IP,恰恰相反我是想让我的IP每次都不一样,因为我这里是重庆的一个区,IP在一个固定断内,用我写的那个批处理常常会有IP重复的情况,所以我想是否有朋友有办法能解决这个问题.我将十分感谢!

     我不知道find 或者 findstr 两:(个命令是否有返回值,如果知道它们的返回值那这个批处理写起来就不难了,不知道有哪位朋友知道它们的返回值吗?:(
作者: iconspy     时间: 2007-4-20 01:41    标题: 谢谢大家的关心,问题已经解决!

谢谢大家的关心,问题已经通过朋友的代码解决!

为了有相同需要的朋友方便,我将代码贴出来,希望能给有类似需要的朋友一点帮助!
@echo off&setlocal
if not exist IPList.txt (>IPList.txt echo.)
rasdial adsl adslxxxxxx password >nul
for /f "skip=2 tokens=2 delims=:" %%a in ('ipconfig/all^|findstr /c:"PPP adapter adsl" /c:"IP Address"') do (
set a=%%a
)
set a=%a: =%
findstr /r "^%a%$" IPList.txt&&(rasdial adsl /disconnect>nul)||(>>IPList.txt echo %a%)