中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-09 01:01
47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » 请教:文件内容的判断和字符替换的批处理
可打印版本  4,388 / 16
第1楼 yangzhiyi 发表于 2006-10-29 06:27
中级用户 发帖 123 积分 261
请教:文件内容的判断和字符替换的批处理
先判断1.txt的文件内容,
1.如果有 Lost = 4 则在文件后面加上 测试不通过,
2.如果有 Reply from 则在文件后面加上 测试通过
3.如果是 Ping request could not find host www.*.com Please check the name and try again. 则在文件后面加上 无法解析目标主机名。
4.如果有 TTL Expired in Transit 则在文件后面加上 所需跃点的数目超过了“生存时间”(TTL)。
5.如果是 Destination Host Unreachable 则在文件后面加上 在发送主机或路由器上不存在目标主机的本地或远程路由。
_______________________________________________
如果有下面这样这样信息

Pinging 127.0.0.1 with 32 bytes of data:

Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
Request timed out.
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64

Ping statistics for 127.0.0.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
______________________________________________________
则替换成下面这样 。
______________________________________________________

正在用 32 字节数据 Ping 127.0.0.1: (替换成这样也行 Pinging 127.0.0.1 正在用 32 字节数据发送)

应答来自 127.0.0.1: 字节=32 时间<1ms TTL=64
应答超时.
应答来自 127.0.0.1: 字节=32 时间<1ms TTL=64
应答来自 127.0.0.1: 字节=32 时间<1ms TTL=64
127.0.0.1 的 Ping 统计: (替换成这样也行 Ping 统计为 127.0.0.1:)
包: 已发送 = 4,已收到 = 4,已丢失 = 0 (0% 丢失)
以毫秒为单位的大约来回行程的时间:
最小值 = 0ms, 最大值 = 0ms, 平均值 = 0ms
________________________________________________________
2000/XP等NT系统使用,使用系统的命令完成。
127.0.0.1 可能为其它 IP ,即还有2.txt、3.txt等文件 127.0.0.1可能为192.168.0.1或www.21cn.com等。
只是批处理中的一部分功能,可以使用 转跳、调用、生成等一切方式,但命令必须系统自带。
如果替换太麻烦,可先做判断的。ping 好像只会返回上面那5种结果。
先说声谢谢,可能星期一再看。

[ Last edited by yangzhiyi on 2006-10-29 at 08:12 AM ]
第2楼 redtek 发表于 2006-10-29 07:01
金牌会员 发帖 1,147 积分 2,902
这是不是太个性化了?哈哈……
而且全是中文的看得非常不习惯:)

还不如直接汉化Ping.exe~:)
第3楼 lxmxn 发表于 2006-10-29 07:17
版主 发帖 4,938 积分 11,386

  呵呵。。同意楼上的。。

  既然楼主已经知道了里面英文的意思,何必要改成中文的不可呢?而且看起来比较别扭。。  =_=
第4楼 electronixtar 发表于 2006-10-29 07:32
铂金会员 发帖 2,672 积分 7,493
偷偷的告诉大家,Vista里的Ping是被汉化过的
第5楼 yangzhiyi 发表于 2006-10-29 07:44
中级用户 发帖 123 积分 261
各位说得对,我就是想汉化ping 返回的信息,
我当然是明白那些意思,但是我做这个是给不会的人用的,所以还有麻烦各位帮帮忙了。

如果替换太麻烦,可先做判断的。ping 好像只会返回5种信息。

[ Last edited by yangzhiyi on 2006-10-29 at 08:06 AM ]
第6楼 yangzhiyi 发表于 2006-10-29 07:53
中级用户 发帖 123 积分 261
Originally posted by electronixtar at 2006-10-29 07:32:
偷偷的告诉大家,Vista里的Ping是被汉化过的


我的删掉了,发个汉化的ping.exe 上来用下。
第7楼 redtek 发表于 2006-10-29 10:01
金牌会员 发帖 1,147 积分 2,902
没想到还真有中文化的Ping~:)
给electronixtar加2分!
第8楼 lxmxn 发表于 2006-10-29 11:13
版主 发帖 4,938 积分 11,386

  建议楼主在 Vista 里面把 ping 命令提取出来,放到NT的系统目录里,直接使用,不知道兼不兼容哈。
第9楼 electronixtar 发表于 2006-10-29 12:45
铂金会员 发帖 2,672 积分 7,493
早说过了嘛,提示 “不是有效的Win32程序”
第10楼 youxi01 发表于 2006-10-29 22:53
高级用户 发帖 247 积分 846 来自 湖南==》广东
@echo off
set for=于
set of=的
set with=用
set in=(以
set data:=数据
set milli-seconds:=毫秒为单位)
set Approximate=大约
set times=时间:
set round=来回
set trip=行程
set Reply=应答
set from=来自
set bytes=字节
set time=时间:
set timed=时间
set out=超过
set statistics=统计
set Packets:=包:
set Sent=已发送=
set Received=已收到=
set Lost=已丢失=
set loss)=丢失)
set Minimum=最小值=
set Maximum=最大值=
set Average=平均值=
set TTL=TTL=
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('ping www.21cn.com') do (
set ret=
for %%a in (%%i) do if defined %%a (set ret=!ret!!%%a!) else set ret=!ret! %%a
if not "!ret!"=="" (set ret=!ret:time=时间! && echo !ret!) else echo.
)
pause>nul

说明:以上代码未能完全满足楼主的要求,翻译的不是很准确。
还有楼主内容的判断,在此也不做判断了。
第11楼 不得不爱 发表于 2006-10-29 23:50
超级版主 发帖 2,044 积分 5,310 来自 四川南充
下面的代码是错误的!set后面不能有2个=不过后面的等可以写成^=
set Sent=已发送=
set Received=已收到=
set Lost=已丢失=
set loss)=丢失)
set Minimum=最小值=
set Maximum=最大值=
set Average=平均值=
第12楼 youxi01 发表于 2006-10-30 00:02
高级用户 发帖 247 积分 846 来自 湖南==》广东
它会默认第一个=的了
显示效果同楼上版主
第13楼 ccwan 发表于 2006-10-30 01:20
金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊
youxi01所说我已测试,成功。
欢迎youxi01,你还在批处理吧混吗?
第14楼 youxi01 发表于 2006-10-30 02:36
高级用户 发帖 247 积分 846 来自 湖南==》广东
哈哈,是啊。
时常也逛逛这里啊,学到了不少的东西。
第15楼 yangzhiyi 发表于 2006-10-31 02:15
中级用户 发帖 123 积分 261
Originally posted by youxi01 at 2006-10-29 22:53:
@echo off
set for=于
set of=的
set with=用
set in=(以
set data:=数据
set milli-seconds:=毫秒为单位)
set Approximate=大约
set times=时间:
set round=来回
set trip=行程
s ...


谢谢,但是超时就不正确了,能否整句替换啊?
后面的也不明白什么意思能解释一下吗?我想要生成文件来使用
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023