中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助:如何用ping到的ip替换到文本中的指定位置?
<<   [1] [2]  >>   >
作者:
标题: 求助:如何用ping到的ip替换到文本中的指定位置? 上一主题 | 下一主题
yaogunbasana
初级用户





积分 74
发帖 34
注册 2008-9-30
状态 离线
『楼 主』:  求助:如何用ping到的ip替换到文本中的指定位置?

如:现有文本a.txt:注: 1 1 0 0 192.168.1.5 1000 0 1 192.168.1.5 3001 0 2 192.168.1.5 3002 0 3 192.168.1.5 3003 0 4 192.168.1.5 3004 0 5 192.168.1.5 3005 0 6 192.168.1.5 3006 0 7 192.168.1.5 3007 0 8 192.168.1.5 3008 0 9 192.168.1.5 3009 0 10 192.168.1.5 3010 0 11 192.168.1.5 3011 0 12 192.168.1.5 3012 0 13 192.168.1.5 3013 0 14 192.168.1.5 3014 0 15 192.168.1.5 3015 0 16 192.168.1.5 3016 0 17 192.168.1.5 3017 0 18 192.168.1.5 3018 0 19 192.168.1.5 3019 0 20 192.168.1.5 3020 0 21 192.168.1.5 3021 0 22 192.168.1.5 3022 0 23 192.168.1.5 3023 0 24 192.168.1.5 3024 0 25 192.168.1.5 3025 0 26 192.168.1.5 3026 0 27 192.168.1.5 3027 0 28 192.168.1.5 3028 0 29 192.168.1.5 3029 0 30 192.168.1.5 3030 0 31 192.168.1.5 3031 0 32 192.168.1.5 3032 0 33 192.168.1.5 3033 0 34 192.168.1.5 3034 0 35 192.168.1.5 3035 0 36 192.168.1.5 3036 0 37 192.168.1.5 3037 0 38 192.168.1.5 3038 0 39 192.168.1.5 3039 0 40 192.168.1.5 3040 0 41 192.168.1.5 3041 0 42 192.168.1.5 3042 0 43 192.168.1.5 3043 0 44 192.168.1.5 3044 0 45 192.168.1.5 3045 0 46 192.168.1.5 3046 0 47 192.168.1.5 3047 0 48 192.168.1.5 3048 0 49 192.168.1.5 3049 0 50 192.168.1.5 3050 0 51 192.168.1.5 5001 0 52 192.168.1.5 5052 0 53 192.168.1.5 5053 现在通过ping lehuam.gicp.net ---这个网址是动态ip网址来的,所以ip是变化的,现在通过ping lehuam.gicp.net 得出这个动态ip地址,把他替换到上面文本里面的ip地址位置 由于192。168。1。5这个ip地址位置是动态ip经常变化的,所以用指定替换字符应该不行吧,应该用指定位置替换的吧! 为了这个学习了很多bat命令,还是不懂怎么写!希望高手大虾来帮我写个,最好说明下,让偶学习下!谢谢了!


2008-9-30 23:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zqz0012005
中级用户




积分 297
发帖 135
注册 2006-10-21
状态 离线
『第 2 楼』:  

@echo off
for /f "tokens=3 delims=: " %%a in ('ping -n 1 lehuam.gicp.net ^| find /i "Reply" ') do set ip=%%a
for /f "delims=" %%a in (a.txt) do (
    set "line=%%a"
    call echo "%%line:192.168.1.5=%ip%%%">>b.txt
)




2008-10-1 00:28
查看资料  发短消息 网志  OICQ (411976538)  编辑帖子  回复  引用回复
yaogunbasana
初级用户





积分 74
发帖 34
注册 2008-9-30
状态 离线
『第 3 楼』:  

Originally posted by zqz0012005 at 2008-10-1 00:28: [code]@echo off for /f "tokens=3 delims=: " %%a in ('ping -n 1 lehuam.gicp.net ^| find /i "Reply" ') do set ip=%%a for /f "delims=" %%a in (a.txt) do ( set &quo ...
运行后变为: "1 1" "0 0 59.33.117.66 1000" "0 1 59.33.117.66 3001" "0 2 59.33.117.66 3002" "0 3 59.33.117.66 3003" "0 4 59.33.117.66 3004" "0 5 59.33.117.66 3005" "0 6 59.33.117.66 3006" "0 7 59.33.117.66 3007" "0 8 59.33.117.66 3008" "0 9 59.33.117.66 3009" "0 10 59.33.117.66 3010" "0 11 59.33.117.66 3011" "0 12 59.33.117.66 3012" "0 13 59.33.117.66 3013" "0 14 59.33.117.66 3014" "0 15 59.33.117.66 3015" "0 16 59.33.117.66 3016" "0 17 59.33.117.66 3017" "0 18 59.33.117.66 3018" "0 19 59.33.117.66 3019" "0 20 59.33.117.66 3020" "0 21 59.33.117.66 3021" "0 22 59.33.117.66 3022" "0 23 59.33.117.66 3023" 怎么会有双引号呢?还有大哥,我现在是想ping一次后,把ip直接替代为a文本中那个ip位置呢,也就是说那个位置是字符是变化的,这样怎么写?继续帮忙啊,大虾们!


2008-10-1 18:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zqz0012005
中级用户




积分 297
发帖 135
注册 2006-10-21
状态 离线
『第 4 楼』:  Re 3楼

去掉代码中最后一句里面的引号。(疏忽,习惯了写引号)
@echo off
for /f "tokens=3 delims=: " %%a in ('ping -n 1 lehuam.gicp.net ^| find /i "Reply" ') do set ip=%%a
for /f "tokens=1,2,4" %%a in (a.txt) do echo %%a %%b %ip% %%c>>b.txt




2008-10-1 19:07
查看资料  发短消息 网志  OICQ (411976538)  编辑帖子  回复  引用回复
yaogunbasana
初级用户





积分 74
发帖 34
注册 2008-9-30
状态 离线
『第 5 楼』:  

谢谢大哥的帮助,不过还有问题,能不能把结果替代到a里面的ip位置呢?现在写进 a文本后,是增加了数字不是代替的结果呢!


2008-10-1 19:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yaogunbasana
初级用户





积分 74
发帖 34
注册 2008-9-30
状态 离线
『第 6 楼』:  

能解析一下语句的说明作用效果呢,想学习一下如何用


2008-10-1 19:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yaogunbasana
初级用户





积分 74
发帖 34
注册 2008-9-30
状态 离线
『第 7 楼』:  

晕,第一行的1 1 那个给删没有了哦,不行 啊


2008-10-1 19:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hackate
中级用户





积分 228
发帖 125
注册 2008-8-25
状态 离线
『第 8 楼』:  

@echo off for /f "tokens=3 delims=: " %%a in ('ping -n 1 lehuam.gicp.net ^| find /i "Reply" ') do set ip=%%a for /f "tokens=1,2,4" %%a in (a.txt) do ( if not "%%c"=="" ( echo %%a %%b %ip% %%c>>b.txt ) else ( echo %%a %%b ) ) 呵呵,做个修改不就好了.


2008-10-1 20:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yaogunbasana
初级用户





积分 74
发帖 34
注册 2008-9-30
状态 离线
『第 9 楼』:  

- -或许你们不明白我的意思啊,我 的意思是把更新到的ip直接替换到a文本的那个ip位置啊


2008-10-1 20:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hackate
中级用户





积分 228
发帖 125
注册 2008-8-25
状态 离线
『第 10 楼』:  

那你的意思是不是不摇生成另一个文件.直接替换A.TXT里面的,就是不要生成B.TXT这样是吗?


2008-10-1 21:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yaogunbasana
初级用户





积分 74
发帖 34
注册 2008-9-30
状态 离线
『第 11 楼』:  

en


2008-10-1 21:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hackate
中级用户





积分 228
发帖 125
注册 2008-8-25
状态 离线
『第 12 楼』:  

@echo off for /f "tokens=3 delims=: " %%a in ('ping -n 1 lehuam.gicp.net ^| find /i "Reply" ') do set ip=%%a for /f "tokens=1,2,4" %%a in (a.txt) do ( if not "%%c"=="" ( echo %%a %%b %ip% %%c>>b.txt ) else ( echo %%a %%b ) ) del a.txt ren b.txt a.txt 这样删除a.txt文件,然后把b.txt进行改名a.txt 呵呵..只能这样做了。批处理不借助三方软件只能如此


2008-10-1 21:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yaogunbasana
初级用户





积分 74
发帖 34
注册 2008-9-30
状态 离线
『第 13 楼』:  

能不能用set那个命令?


2008-10-1 22:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yaogunbasana
初级用户





积分 74
发帖 34
注册 2008-9-30
状态 离线
『第 14 楼』:  

@echo off for /f "tokens=2 delims=[]" %%a in ('ping lehuam.gicp.net') do set ip=%%a for /f "skip=1 tokens=3" %%b in (a.txt) do set ap=%%b for /f "delims=" %%c in (a.txt) do ( set "line=%%c" call echo %%line:%ap%=%ip%%%>>b.txt ) del a.txt ren b.txt a.txt


2008-10-1 22:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hackate
中级用户





积分 228
发帖 125
注册 2008-8-25
状态 离线
『第 15 楼』:  

一样的。你用set str的替换也一样的,你必须还是要写入文件的,呵呵,没用


2008-10-1 22:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
<<   [1] [2]  >>   >
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: