中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-24 05:16
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教:文件内容的判断和字符替换的批处理 查看 4,207 回复 16
楼 主 请教:文件内容的判断和字符替换的批处理 发表于 2006-10-29 06:27 ·  中国 广东 茂名 电信
中级用户
★★
积分 261
发帖 123
注册 2006-06-06 19:23
20年会员
UID 56648
状态 离线
先判断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 发表于 2006-10-29 07:01 ·  中国 北京 东城区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
这是不是太个性化了?哈哈……
而且全是中文的看得非常不习惯:)

还不如直接汉化Ping.exe~:)
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
3 发表于 2006-10-29 07:17 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线

  呵呵。。同意楼上的。。

  既然楼主已经知道了里面英文的意思,何必要改成中文的不可呢?而且看起来比较别扭。。  =_=
4 发表于 2006-10-29 07:32 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
20年会员
UID 42173
性别 男
状态 离线
偷偷的告诉大家,Vista里的Ping是被汉化过的
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
redtek +2 2006-10-29 10:00

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
5 发表于 2006-10-29 07:44 ·  中国 广东 茂名 电信
中级用户
★★
积分 261
发帖 123
注册 2006-06-06 19:23
20年会员
UID 56648
状态 离线
各位说得对,我就是想汉化ping 返回的信息,
我当然是明白那些意思,但是我做这个是给不会的人用的,所以还有麻烦各位帮帮忙了。

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

[ Last edited by yangzhiyi on 2006-10-29 at 08:06 AM ]
6 发表于 2006-10-29 07:53 ·  中国 广东 茂名 电信
中级用户
★★
积分 261
发帖 123
注册 2006-06-06 19:23
20年会员
UID 56648
状态 离线
Originally posted by electronixtar at 2006-10-29 07:32:
偷偷的告诉大家,Vista里的Ping是被汉化过的


我的删掉了,发个汉化的ping.exe 上来用下。
7 发表于 2006-10-29 10:01 ·  中国 北京 东城区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
没想到还真有中文化的Ping~:)
给electronixtar加2分!
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
8 发表于 2006-10-29 11:13 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线

  建议楼主在 Vista 里面把 ping 命令提取出来,放到NT的系统目录里,直接使用,不知道兼不兼容哈。
9 发表于 2006-10-29 12:45 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
20年会员
UID 42173
性别 男
状态 离线
早说过了嘛,提示 “不是有效的Win32程序”

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
10 发表于 2006-10-29 22:53 ·  中国 广东 清远 联通
高级用户
★★
积分 846
发帖 247
注册 2006-10-27 12:03
19年会员
UID 68504
性别 男
来自 湖南==》广东
状态 离线
@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

说明:以上代码未能完全满足楼主的要求,翻译的不是很准确。
还有楼主内容的判断,在此也不做判断了。
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
redtek +2 2006-10-31 02:42
11 发表于 2006-10-29 23:50 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
下面的代码是错误的!set后面不能有2个=不过后面的等可以写成^=
set Sent=已发送=
set Received=已收到=
set Lost=已丢失=
set loss)=丢失)
set Minimum=最小值=
set Maximum=最大值=
set Average=平均值=
12 发表于 2006-10-30 00:02 ·  中国 广东 清远 联通
高级用户
★★
积分 846
发帖 247
注册 2006-10-27 12:03
19年会员
UID 68504
性别 男
来自 湖南==》广东
状态 离线
它会默认第一个=的了
显示效果同楼上版主
13 发表于 2006-10-30 01:20 ·  中国 河北 廊坊 联通
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
19年会员
UID 63486
来自 河北廊坊
状态 离线
youxi01所说我已测试,成功。
欢迎youxi01,你还在批处理吧混吗?
14 发表于 2006-10-30 02:36 ·  中国 广东 清远 联通
高级用户
★★
积分 846
发帖 247
注册 2006-10-27 12:03
19年会员
UID 68504
性别 男
来自 湖南==》广东
状态 离线
哈哈,是啊。
时常也逛逛这里啊,学到了不少的东西。
15 发表于 2006-10-31 02:15 ·  中国 广东 茂名 电信
中级用户
★★
积分 261
发帖 123
注册 2006-06-06 19:23
20年会员
UID 56648
状态 离线
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 ...


谢谢,但是超时就不正确了,能否整句替换啊?
后面的也不明白什么意思能解释一下吗?我想要生成文件来使用
论坛跳转: