中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-10 00:37
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助:如何用ping到的ip替换到文本中的指定位置? 查看 1,984 回复 20
楼 主 求助:如何用ping到的ip替换到文本中的指定位置? 发表于 2008-09-30 23:29 ·  中国 广东 中山 电信
初级用户
积分 74
发帖 34
注册 2008-09-30 22:40
17年会员
UID 127117
性别 男
状态 离线
如:现有文本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命令,还是不懂怎么写!希望高手大虾来帮我写个,最好说明下,让偶学习下!谢谢了!
2 发表于 2008-10-01 00:28 ·  中国 四川 成都 电信
中级用户
★★
积分 297
发帖 135
注册 2006-10-21 12:00
19年会员
UID 67627
性别 男
状态 离线
@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
)
3 发表于 2008-10-01 18:33 ·  中国 广东 中山 电信
初级用户
积分 74
发帖 34
注册 2008-09-30 22:40
17年会员
UID 127117
性别 男
状态 离线
Originally posted by zqz0012005 at 2008-10-1 00:28:
@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位置呢,也就是说那个位置是字符是变化的,这样怎么写?继续帮忙啊,大虾们!
4 Re 3楼 发表于 2008-10-01 19:07 ·  中国 四川 成都 电信
中级用户
★★
积分 297
发帖 135
注册 2006-10-21 12:00
19年会员
UID 67627
性别 男
状态 离线
去掉代码中最后一句里面的引号。(疏忽,习惯了写引号)
@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
5 发表于 2008-10-01 19:29 ·  中国 广东 中山 电信
初级用户
积分 74
发帖 34
注册 2008-09-30 22:40
17年会员
UID 127117
性别 男
状态 离线
谢谢大哥的帮助,不过还有问题,能不能把结果替代到a里面的ip位置呢?现在写进
a文本后,是增加了数字不是代替的结果呢!
6 发表于 2008-10-01 19:30 ·  中国 广东 中山 电信
初级用户
积分 74
发帖 34
注册 2008-09-30 22:40
17年会员
UID 127117
性别 男
状态 离线
能解析一下语句的说明作用效果呢,想学习一下如何用
7 发表于 2008-10-01 19:42 ·  中国 广东 中山 电信
初级用户
积分 74
发帖 34
注册 2008-09-30 22:40
17年会员
UID 127117
性别 男
状态 离线
晕,第一行的1 1 那个给删没有了哦,不行 啊
8 发表于 2008-10-01 20:04 ·  中国 福建 漳州 联通
中级用户
★★
积分 228
发帖 125
注册 2008-08-25 19:17
17年会员
UID 124135
性别 男
状态 离线
@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
)
)

呵呵,做个修改不就好了.
9 发表于 2008-10-01 20:31 ·  中国 广东 中山 电信
初级用户
积分 74
发帖 34
注册 2008-09-30 22:40
17年会员
UID 127117
性别 男
状态 离线
- -或许你们不明白我的意思啊,我 的意思是把更新到的ip直接替换到a文本的那个ip位置啊
10 发表于 2008-10-01 21:14 ·  中国 福建 漳州 联通
中级用户
★★
积分 228
发帖 125
注册 2008-08-25 19:17
17年会员
UID 124135
性别 男
状态 离线
那你的意思是不是不摇生成另一个文件.直接替换A.TXT里面的,就是不要生成B.TXT这样是吗?
11 发表于 2008-10-01 21:43 ·  中国 广东 中山 电信
初级用户
积分 74
发帖 34
注册 2008-09-30 22:40
17年会员
UID 127117
性别 男
状态 离线
en
12 发表于 2008-10-01 21:53 ·  中国 福建 漳州 联通
中级用户
★★
积分 228
发帖 125
注册 2008-08-25 19:17
17年会员
UID 124135
性别 男
状态 离线
@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
呵呵..只能这样做了。批处理不借助三方软件只能如此
13 发表于 2008-10-01 22:13 ·  中国 广东 中山 电信
初级用户
积分 74
发帖 34
注册 2008-09-30 22:40
17年会员
UID 127117
性别 男
状态 离线
能不能用set那个命令?
14 发表于 2008-10-01 22:15 ·  中国 广东 中山 电信
初级用户
积分 74
发帖 34
注册 2008-09-30 22:40
17年会员
UID 127117
性别 男
状态 离线
@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
15 发表于 2008-10-01 22:21 ·  中国 福建 漳州 联通
中级用户
★★
积分 228
发帖 125
注册 2008-08-25 19:17
17年会员
UID 124135
性别 男
状态 离线
一样的。你用set str的替换也一样的,你必须还是要写入文件的,呵呵,没用
论坛跳转: