中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 发一个代码和大家分享下(查看本机外网IP)
作者:
标题: 发一个代码和大家分享下(查看本机外网IP) 上一主题 | 下一主题
fe19880919
初级用户





积分 27
发帖 24
注册 2010-5-2
状态 离线
『楼 主』:  发一个代码和大家分享下(查看本机外网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 ]

2010-6-14 12:20
查看资料  发送邮件  发短消息 网志  OICQ (1161560405)  编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:  

有必要发两个帖子么?
http://www.cn-dos.net/forum/viewthread.php?tid=51599



2010-6-14 13:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 3 楼』:  

楼主不会合并,是因为楼主不熟悉more的用法。



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-6-14 13:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fe19880919
初级用户





积分 27
发帖 24
注册 2010-5-2
状态 离线
『第 4 楼』:  

回HAT:
写出分享主要是吸引人看的,关键在于想有人帮忙把两个合成一个,但是我实在做不了,只能用这个办法了。

2010-6-14 13:40
查看资料  发送邮件  发短消息 网志  OICQ (1161560405)  编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 5 楼』:  

没具体看楼主的代码,直接合并:
@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 exist ip.ini del ip.ini
<"%~f0" more +40 >tmp.vbs
cscript //NoLogo /e:vbscript tmp.vbs %1>ip.ini
echo >nul && del tmp.vbs
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)安装完成!
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




批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-6-14 15:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fe19880919
初级用户





积分 27
发帖 24
注册 2010-5-2
状态 离线
『第 6 楼』:  

问五楼个问题,<"%~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
是什么意思,怎么用的,有没有相关的教程或是能粗略的说下大概意思更好。

2010-6-19 15:56
查看资料  发送邮件  发短消息 网志  OICQ (1161560405)  编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by fe19880919 at 2010-6-19 15:56:
问五楼个问题,
<"%~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
是什么意思,怎么用的,有没有相关的教程或是能粗略的说下大概意思更好。

这里使用more命令的+n参数,显示由 n 指定的行开始的第一个文件。即跳过前n行,很显然这里该写成more +4,5的话将丢失set oDOM = WScript.GetObject("http://www.ip138.com/ip2city.asp")这行。



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-6-19 21:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
aini2010
新手上路





积分 8
发帖 8
注册 2010-6-18
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by Hanyeguxing at 2010-6-14 15:02:
没具体看楼主的代码,直接合并:[code]@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 ...

cscript //NoLogo /e:vbscript tmp.vbs %1>ip.ini

请问这里的%1是指哪里?

2010-6-21 16:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
genteman
初级用户





积分 90
发帖 43
注册 2007-10-31
状态 离线
『第 9 楼』:  

调用这段代码的第一个参数

2010-6-21 19:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
aini2010
新手上路





积分 8
发帖 8
注册 2010-6-18
状态 离线
『第 10 楼』:  



  Quote:
Originally posted by genteman at 2010-6-21 19:27:
调用这段代码的第一个参数

实在没看不出来第一个参数在那,把%1去掉也能显示正确的结果。
echo >nul && del tmp.vbs 这个echo >nul有什么作用,去掉也能显示正确结果,请指教。

2010-6-22 01:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: