中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [感谢HAT和版主3742668解答]ping命令处理-精彩
作者:
标题: [感谢HAT和版主3742668解答]ping命令处理-精彩 上一主题 | 下一主题
123cainiao
初级用户





积分 97
发帖 41
注册 2007-8-30
状态 离线
『楼 主』:  [感谢HAT和版主3742668解答]ping命令处理-精彩

学习写批处理文件,遇到下面这个问题,找了半天,不知如何处理,请各位大侠指教:
程序要实现的功能:
1、ping 一个域名(www.sina.com),把ping 出的具体IP地址(比如:218.30.66.101)记录到名字为 ip.ini的文件里。
2、ip.ini的原有文件内容如下:
yuming=www.sian.com
yumingip=218.11.11.10
也就是说PING后,自动更换这个IP

再次感谢HAT和版主3742668的回复,通过学习两位的代码,可以发现写程序思路是非常重要的,着实让人受益匪浅!

[ Last edited by 123cainiao on 2007-9-2 at 03:28 PM ]

2007-8-30 19:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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

try this one:
@echo off
echo Please wait a moment...
if exist ipbak.ini del ipbak.ini
for /f "tokens=1,2 delims=]" %%a in ('ping www.sina.com ^| findstr "data:"') do (
  set result=%%a
)
set result=%result:~-13%
for /f "tokens=1,2 delims==" %%a in (ip.ini) do (
  if "%%a" equ "yumingip" (
    echo %%a=%result%>>ipbak.ini
  ) else (
    echo %%a=%%b>>ipbak.ini
  )
)
if exist ipbak.ini (
  del ip.ini
  ren ipbak.ini ip.ini
)
[ Last edited by HAT on 2007-8-31 at 05:01 PM ]

   此帖被 +2 点积分    点击查看详情   
评分人:【 123cainiao 分数: +2  时间:2007-9-2 18:02


2007-8-30 20:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
beiwei36
新手上路





积分 18
发帖 9
注册 2007-8-31
状态 离线
『第 3 楼』:  

请问下自动换取IP的ip列表在那里存放?还是随机的?

2007-8-31 06:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
123cainiao
初级用户





积分 97
发帖 41
注册 2007-8-30
状态 离线
『第 4 楼』:  

IP列表在IP.ini文件里。也就是说IP.ini文件里一开始就有文件内容如下:
yuming=www.sian.com
yumingip=218.11.11.10
这里只是用批处理来达到自动检测域名指向的IP,并更新的目的.
 
测试是否实现要求的功能很简单,用记事本写个ini文件,里面只有2行内容:
yuming=www.sian.com
yumingip=218.11.11.10
然后保存。
接下来运行设计的批处理程序,如果达到更新yumingip=218.11.11.10的目的,就是设计成功了。

[ Last edited by 123cainiao on 2007-8-31 at 10:38 AM ]

2007-8-31 10:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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

//这里是不是HAT提供的答案里条件判断上有小BUG

2楼代码已更新

2007-8-31 16:59
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bbq5201
初级用户





积分 136
发帖 51
注册 2007-8-4
状态 离线
『第 6 楼』:  

如果ping 出的IP...位数不同..怎么办??
61.124.12.96
61.124.121.231
61.12.54.12

2007-8-31 17:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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

//如果ping 出的IP...位数不同..怎么办??

这样的话,获取真实IP地址的那段要修改一下,会比较麻烦,但并非无法实现。

2007-8-31 17:03
查看资料  发短消息 网志   编辑帖子  回复  引用回复
csyfly2003
新手上路





积分 10
发帖 5
注册 2007-8-31
状态 离线
『第 8 楼』:  

;):P:P

2007-8-31 19:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xxi
初级用户





积分 48
发帖 24
注册 2007-8-31
状态 离线
『第 9 楼』:  

是不是过于麻烦,
可以用for.读取,然后直接写到那个文件,都可以自己加的

2007-8-31 22:34
查看资料  发短消息 网志  OICQ (327869085)  编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 10 楼』:  


@echo off
    set /p yuming=请输入域名:
    del ip.ini 2>nul

    for /f "delims=[] tokens=2" %%i in ('ping %yuming% ^| findstr "["') do set "yumingip=%%i"
    set yuming>ip.ini

    echo 执行完毕!
    echo 按任意键退出..
    pause>nul
goto :eof
许久不写,生疏了许多。
这些简单的事情,还是BAT方便。

   此帖被 +2 点积分    点击查看详情   
评分人:【 123cainiao 分数: +2  时间:2007-9-2 18:03


2007-9-2 15:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
123cainiao
初级用户





积分 97
发帖 41
注册 2007-8-30
状态 离线
『第 11 楼』:  



  Quote:
Originally posted by 3742668 at 2007-9-2 03:05 PM:
[code]@echo off
    set /p yuming=请输入域名:
    del ip.ini 2>nul

    for /f "delims=[] tokens=2" %%i in ('ping %yuming% ^| findstr "["') do set "yumingip=%%i ...

非常感谢版主回复.您的写法简单明了,而且很好的解决了IP位数判断的问题。
请教可否把手动输入域名,改为直接从ip.ini文件中调用。

2007-9-2 15:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 12 楼』:  

Re 123cainiao:
消息收到,要实现四楼的功能也很简单,稍做修改即可:
@echo off
    for /f %%i in (ip.ini) do set "%%i"

    for /f "delims=[] tokens=2" %%i in ('ping %yuming% ^| findstr "["') do set "yumingip=%%i"
    set yuming>ip.ini

    echo 执行完毕!
    echo 按任意键退出..
    pause>nul
goto :eof


   此帖被 +2 点积分    点击查看详情   
评分人:【 123cainiao 分数: +2  时间:2007-9-2 18:03


2007-9-2 15:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
123cainiao
初级用户





积分 97
发帖 41
注册 2007-8-30
状态 离线
『第 13 楼』:  

版主3742668的程序运行会有如下2个问题:
1、如果IP.ini文件里有其余内容,程序运行后会删除其余内容,只留相关的那两句:
如ip.ini文件内容如下:
abc=1.20.35
txt=name
.......
yuming=www.sian.com
yumingip=218.11.11.10
如果运行批处理文件后:
ip.ini直接变成
yuming=www.sian.com
yumingip=218.11.11.10
其余不相干内容全部被删了。
2、是字符串变量的问题
如果把yumingip改名为yu_ming_ip_0
这时无论ip.ini内容如何,程序运行后,ip.ini里都只有:
yuming=www.sian.com
这一行.

[ Last edited by 123cainiao on 2007-9-2 at 05:20 PM ]

2007-9-2 16:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 14 楼』:  



  Quote:
Originally posted by 123cainiao at 2007-9-2 16:39:
版主3742668的程序运行会有如下问题:
如果IP.ini文件里有其余内容,程序运行后会删除其余内容,只留相关的那两句:
如ip.ini文件内容如下:
abc=1.2 ...

文件格式一开始没说清楚。
这个也不是问题,参考一下 findstr ,以及 > 和 >>的差别,或许另外配合for命令的skip开关,还是很简单的。
你先自己尝试一下,实在不行你再求助大家吧。

   此帖被 +8 点积分      点击查看详情   
评分人:【 vkill 分数: +8  时间:2007-9-3 13:38


2007-9-2 16:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: