![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-09 14:35 |
共 47,811 主题排行 / 349,896 发帖 / 今日 1 篇 / 48,254 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 高速获取公网IP批处理 |
| 可打印版本 2,567 / 19 |
| 第1楼 tvzml | 发表于 2008-03-30 22:39 |
| 初级用户 发帖 67 积分 157 | |
|
高速获取公网IP批处理 由于个人需要获取外网IP,在网上找到的获取www.ip138.com原代码方法已经失效,论坛提供的方法获取时间太长,实际应用不太理想,以下是我初学VBS写的,速度非常快,但是脚本没有简化,希望高手帮助优化下代码。
代码工作原理: 下载http://www.ip138.com/ip2city.asp,取“您的IP地址是:" 右13位保存到windows目录下 IP.TXT,显示方法是我这2条到这里学到的,利用<读取IP.TXT内容并显示,大家不要笑我菜,总有一天我会超过你的,最后得到%n% 就是外网IP地址值,这对我来说用途太大了。 至于大家说是不是原创,我认为没有所谓的原创,我们天生下来是不会VBS的,但是我们会调用代码为我们工作,只要实用有效就行了。 @echo off echo On Error Resume next >checkip.vbs echo Url="http://www.ip138.com/ip2city.asp" >>checkip.vbs echo Set NP = Createobject("Microsoft.XMLHTTP") >>checkip.vbs echo NP.Open "GET", url, False >>checkip.vbs echo NP.Send >>checkip.vbs echo Data=NP.responsebody >>checkip.vbs echo Set NP = Nothing >>checkip.vbs echo Data = bytes2BSTR(Data) >>checkip.vbs echo Here = InstrRev(Data, "您的IP地址是:", -1,0) >>checkip.vbs echo Data = Mid(Data,Here+9,13) >>checkip.vbs echo Hers = InstrRev(data, "<",-1,0) >>checkip.vbs echo Set ICEhack = CreateObject("InternetExplorer.Application") >>checkip.vbs echo ICEhack.Navigate("about:blank") >>checkip.vbs echo If Hers ^<^> 0 Then >>checkip.vbs echo ICEhack.document.parentwindow.clipboardData.SetData "text", Mid(Data,1,Hers-1) >>checkip.vbs echo Set WshSHell = WScript.CreateObject("WScript.Shell") >>checkip.vbs echo Set FSO = CreateObject("Scripting.FileSystemObject") >>checkip.vbs echo Set SCF = FSO.OpenTextFile(FSO.BuildPath(FSO.GetSpecialFolder(0),"ip.txt"),2,True) >>checkip.vbs echo SCF.Write(Data) >>checkip.vbs echo SCF.Close >>checkip.vbs echo Else >>checkip.vbs echo ICEhack.document.parentwindow.clipboardData.SetData "text", Data >>checkip.vbs echo Set WshSHell = WScript.CreateObject("WScript.Shell") >>checkip.vbs echo Set FSO = CreateObject("Scripting.FileSystemObject") >>checkip.vbs echo Set SCF = FSO.OpenTextFile(FSO.BuildPath(FSO.GetSpecialFolder(0),"ip.txt"),2,True) >>checkip.vbs echo SCF.Write(Data) >>checkip.vbs echo SCF.Close >>checkip.vbs echo End If >>checkip.vbs echo ICEhack.Quit >>checkip.vbs echo fso.DeleteFile(WScript.ScriptName) >>checkip.vbs echo Function bytes2BSTR(vIn) >>checkip.vbs echo strReturn = "" >>checkip.vbs echo For i = 1 To LenB(vIn) >>checkip.vbs echo ThisCharCode = AscB(MidB(vIn,i,1)) >>checkip.vbs echo If ThisCharCode ^< ^&H80 Then >>checkip.vbs echo strReturn = strReturn ^& Chr(ThisCharCode) >>checkip.vbs echo Else >>checkip.vbs echo NextCharCode = AscB(MidB(vIn,i+1,1)) >>checkip.vbs echo strReturn = strReturn ^& Chr(CLng(ThisCharCode) * ^&H100 + CInt(NextCharCode)) >>checkip.vbs echo i = i + 1 >>checkip.vbs echo End If >>checkip.vbs echo Next >>checkip.vbs echo bytes2BSTR = strReturn >>checkip.vbs echo End Function >>checkip.vbs checkip.vbs set/p n=<%windir%\ip.txt&cls echo 外网IP:%n% pause>nul [ Last edited by tvzml on 2008-3-30 at 10:57 PM ] |
|
| 第2楼 tvzml | 发表于 2008-03-30 22:41 |
| 初级用户 发帖 67 积分 157 | |
|
高速获取公网IP批处理VBS代码 On Error Resume next
Url="http://www.ip138.com/ip2city.asp" Set NP = Createobject("Microsoft.XMLHTTP") NP.Open "GET", url, False NP.Send Data=NP.responsebody Set NP = Nothing Data = bytes2BSTR(Data) Here = InstrRev(Data, "您的IP地址是:", -1,0) Data = Mid(Data,Here+9,13) Hers = InstrRev(data, "<",-1,0) Set ICEhack = CreateObject("InternetExplorer.Application") ICEhack.Navigate("about:blank") If Hers <> 0 Then ICEhack.document.parentwindow.clipboardData.SetData "text", Mid(Data,1,Hers-1) Set WshSHell = WScript.CreateObject("WScript.Shell") Set FSO = CreateObject("Scripting.FileSystemObject") Set SCF = FSO.OpenTextFile(FSO.BuildPath(FSO.GetSpecialFolder(0),"ip.txt"),2,True) SCF.Write(Data) SCF.Close Else ICEhack.document.parentwindow.clipboardData.SetData "text", Data Set WshSHell = WScript.CreateObject("WScript.Shell") Set FSO = CreateObject("Scripting.FileSystemObject") Set SCF = FSO.OpenTextFile(FSO.BuildPath(FSO.GetSpecialFolder(0),"ip.txt"),2,True) SCF.Write(Data) SCF.Close End If ICEhack.Quit fso.DeleteFile(WScript.ScriptName) Function bytes2BSTR(vIn) strReturn = "" For i = 1 To LenB(vIn) ThisCharCode = AscB(MidB(vIn,i,1)) If ThisCharCode < &H80 Then strReturn = strReturn & Chr(ThisCharCode) Else NextCharCode = AscB(MidB(vIn,i+1,1)) strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) i = i + 1 End If Next bytes2BSTR = strReturn End Function |
|
| 第3楼 electronixtar | 发表于 2008-03-31 03:13 |
| 铂金会员 发帖 2,672 积分 7,493 | |
|
代码真够长的~~
|
|
| 第4楼 zh159 | 发表于 2008-03-31 13:25 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
有这么长么?
|
|
| 第5楼 tvzml | 发表于 2008-03-31 14:43 |
| 初级用户 发帖 67 积分 157 | |
Originally posted by zh159 at 2008-3-31 01:25 PM: |
|
| 第6楼 topmcs | 发表于 2008-04-02 12:35 |
| 初级用户 发帖 16 积分 25 来自 湖南 | |
|
有什么实际用途么??还望指明啊
|
|
| 第7楼 tvzml | 发表于 2008-04-02 14:34 |
| 初级用户 发帖 67 积分 157 | |
|
获取的外网IP地址,可以写其他配置文件用。
|
|
| 第8楼 1073 | 发表于 2008-04-02 22:09 |
| 初级用户 发帖 12 积分 29 | |
|
这里高手果然多
|
|
| 第9楼 xiaoweivip | 发表于 2008-04-03 12:23 |
| 贫困用户 发帖 1 积分 -4 | |
|
ddddddddddddddddddd
|
|
| 第10楼 slore | 发表于 2008-04-03 20:26 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
Set objrcl = CreateObject("rcbdyctl.Setting")
MsgBox objrcl.GetIPAddress Set objrcl = Nothing 不知道这个速度如何嗬~ |
|
| 第11楼 plp626 | 发表于 2008-04-03 22:00 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
什么时候我能把VBS用得这么熟练就好啦
|
|
| 第12楼 lyaa | 发表于 2008-04-13 22:01 |
| 初级用户 发帖 17 积分 40 | |
|
怎样再把获得的地址以文件的形势自动上传到ftp空间
|
|
| 第13楼 zh159 | 发表于 2008-04-13 22:54 |
| 金牌会员 发帖 1,467 积分 3,687 | |
Originally posted by slore at 2008-4-3 20:26: 大哥,看清楚题目 ![]() |
|
| 第14楼 tvzml | 发表于 2008-04-13 22:56 |
| 初级用户 发帖 67 积分 157 | |
Originally posted by lyaa at 2008-4-13 10:01 PM: 可以使用FTP命令将 IP.txt 上传的 @echo open 192.168.0.252>ftpcmd @echo user user pwd>>ftpcmd @echo prompt>>ftpcmd @echo binary>>ftpcmd @echo put ip.txt>>ftpcmd @echo bye>>ftpcmd @ftp -n<ftpcmd |
|
| 第15楼 slore | 发表于 2008-04-14 13:03 |
| 铂金会员 发帖 2,478 积分 5,212 | |
Originally posted by zh159 at 2008-4-13 22:54: 看的很清楚…… 建议你测试…… |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |