![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 03:45 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 发一个代码和大家分享下(查看本机外网IP) |
| 可打印版本 1,349 / 9 |
| 第1楼 fe19880919 | 发表于 2010-06-14 12:20 |
| 初级用户 发帖 24 积分 27 | |
|
发一个代码和大家分享下(查看本机外网IP) 首先说明一下,本程序有一个小问题,就是代码要分两个文件才能运行,要是少一个就不能运行,哪个会的高手请帮下忙合成一个,另外就是第二个代码是盗版的别人的,我也不太懂的,不过第一个是我自己完成的,刚写完大家分享下。
本机IP查看器.bat @echo off mode con cols=60 lines=25 title 查看本机在外网IP echo. set p138=0 :ptry if %p138%==5 goto pfail set /a p138=%p138%+1 echo 测试网络连接... ping -n 1 www.ip138.com>nul if errorlevel 1 (echo 网络连接失败!&goto ptry) echo 网络连接成功! if not exist netip.cmd (echo netip.cmd文件不存在,请重新安装!&pause>nul&exit) if exist ip.ini del ip.ini call netip.cmd echo 获取本机外网IP成功! for /f %%i in (ip.ini) do set netip=%%i if not exist iphistory.ini (set numhis=0&goto his) for /f %%i in (iphistory.ini) do set num=%%i set numhis=%num:~0,1% set /a hiserror=%num:~0,2%+1 2>nul if errorlevel 1 goto his set numhis=%num:~0,2% set /a hiserro2=%num:~0,3%+1 2>nul if errorlevel 1 goto his set numhis=%num:~0,3% :his set /a numhis=%numhis%+1 echo %numhis%. %date:~0,10% %time:~0,8% %netip% >>iphistory.ini del ip.ini echo 本机外网IP为:%netip% set historyip=0 set /p historyip=查看历史IP记录(H): if /i %historyip%==h type iphistory.ini|more pause>nul&exit :pfail echo 网络连接五次不成功,按任意键退出!&pause>nul&exit echo 文件(本机IP查看器.bat)安装完成! netip.cmd(此文件名不要更改,并和上面的文件放到同一文件夹) @echo off <"%~f0" more +5 >tmp.vbs cscript //NoLogo /e:vbscript tmp.vbs %1>ip.ini echo >nul && del tmp.vbs goto:eof set oDOM = WScript.GetObject("http://www.ip138.com/ip2city.asp") do until oDOM.readyState = "complete" WScript.sleep 200 Loop s=oDOM.documentElement.innerText set re = New RegExp re.Pattern="(\d+)\.(\d+)\.(\d+)\.(\d+)" For Each m in re.Execute(s) WScript.Echo m & "" Next 哪个有好的更改意见请提出来,另代码有什么问题也提出来 [ Last edited by fe19880919 on 2010-6-14 at 12:22 ] |
|
| 第2楼 HAT | 发表于 2010-06-14 13:25 |
| 版主 发帖 5,017 积分 9,023 | |
| 第3楼 Hanyeguxing | 发表于 2010-06-14 13:33 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
楼主不会合并,是因为楼主不熟悉more的用法。
|
|
| 第4楼 fe19880919 | 发表于 2010-06-14 13:40 |
| 初级用户 发帖 24 积分 27 | |
|
回HAT:
写出分享主要是吸引人看的,关键在于想有人帮忙把两个合成一个,但是我实在做不了,只能用这个办法了。 |
|
| 第5楼 Hanyeguxing | 发表于 2010-06-14 15:02 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
没具体看楼主的代码,直接合并:
|
|
| 第6楼 fe19880919 | 发表于 2010-06-19 15:56 |
| 初级用户 发帖 24 积分 27 | |
|
问五楼个问题,<"%~f0" more +5 >tmp.vbs
cscript //NoLogo /e:vbscript tmp.vbs %1>ip.ini echo >nul && del tmp.vbs goto:eof set oDOM = WScript.GetObject("http://www.ip138.com/ip2city.asp") do until oDOM.readyState = "complete" WScript.sleep 200 Loop s=oDOM.documentElement.innerText set re = New RegExp re.Pattern="(\d+)\.(\d+)\.(\d+)\.(\d+)" For Each m in re.Execute(s) WScript.Echo m & "" Next 是什么意思,怎么用的,有没有相关的教程或是能粗略的说下大概意思更好。 |
|
| 第7楼 Hanyeguxing | 发表于 2010-06-19 21:05 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
Originally posted by fe19880919 at 2010-6-19 15:56: 这里使用more命令的+n参数,显示由 n 指定的行开始的第一个文件。即跳过前n行,很显然这里该写成more +4,5的话将丢失set oDOM = WScript.GetObject("http://www.ip138.com/ip2city.asp")这行。 |
|
| 第8楼 aini2010 | 发表于 2010-06-21 16:19 |
| 新手上路 发帖 8 积分 8 | |
Originally posted by Hanyeguxing at 2010-6-14 15:02: |
|
| 第9楼 genteman | 发表于 2010-06-21 19:27 |
| 初级用户 发帖 43 积分 90 | |
|
调用这段代码的第一个参数
|
|
| 第10楼 aini2010 | 发表于 2010-06-22 01:17 |
| 新手上路 发帖 8 积分 8 | |
Originally posted by genteman at 2010-6-21 19:27: 实在没看不出来第一个参数在那,把%1去掉也能显示正确的结果。 echo >nul && del tmp.vbs 这个echo >nul有什么作用,去掉也能显示正确结果,请指教。 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |