先判断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
______________________________________________________
则替换成下面这样 。
______________________________________________________
[ Last edited by yangzhiyi on 2006-10-29 at 08:06 AM ]作者: yangzhiyi 时间: 2006-10-29 07:53
Quote:
Originally posted by electronixtar at 2006-10-29 07:32:
偷偷的告诉大家,Vista里的Ping是被汉化过的
我的删掉了,发个汉化的ping.exe 上来用下。作者: redtek 时间: 2006-10-29 10:01 没想到还真有中文化的Ping~:)
给electronixtar加2分!作者: lxmxn 时间: 2006-10-29 11:13
建议楼主在 Vista 里面把 ping 命令提取出来,放到NT的系统目录里,直接使用,不知道兼不兼容哈。作者: electronixtar 时间: 2006-10-29 12:45 早说过了嘛,提示 “不是有效的Win32程序”作者: youxi01 时间: 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=行程
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
说明:以上代码未能完全满足楼主的要求,翻译的不是很准确。
还有楼主内容的判断,在此也不做判断了。作者: 不得不爱 时间: 2006-10-29 23:50 下面的代码是错误的!set后面不能有2个=不过后面的等可以写成^=
set Sent=已发送=
set Received=已收到=
set Lost=已丢失=
set loss)=丢失)
set Minimum=最小值=
set Maximum=最大值=
set Average=平均值=作者: youxi01 时间: 2006-10-30 00:02 它会默认第一个=的了
显示效果同楼上版主作者: ccwan 时间: 2006-10-30 01:20 youxi01所说我已测试,成功。
欢迎youxi01,你还在批处理吧混吗?作者: youxi01 时间: 2006-10-30 02:36 哈哈,是啊。
时常也逛逛这里啊,学到了不少的东西。作者: yangzhiyi 时间: 2006-10-31 02:15
Quote:
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 ...
谢谢,但是超时就不正确了,能否整句替换啊?
后面的也不明白什么意思能解释一下吗?我想要生成文件来使用作者: youxi01 时间: 2006-10-31 03:46 rem 利用for读取ping命令返回结果;
for /f "delims=" %%i in ('ping www.21cn.com') do (
rem 初始化ret(这里就是清空的意思);
set ret=
rem" if defined %%a"就是检查是否存在对应的变量%%a,如果存在就用变量值替换;(变量就是我们要翻译的单词,而变量值已经设置为对应的中文意思)
for %%a in (%%i) do if defined %%a (set ret=!ret!!%%a!) else set ret=!ret! %%a
rem 因为时间在这里不好翻译,所以直接采用这种替代的办法。
if not "!ret!"=="" (set ret=!ret:time=时间! && echo !ret!) else echo.
)作者: yangzhiyi 时间: 2006-10-31 06:27 这两句还是不明白啊,能再说说吗?
if defined %%a (set ret=!ret!!%%a!) else set ret=!ret! %%a
if not "!ret!"=="" (set ret=!ret:time=时间! && echo !ret!) else echo.
能否整段替换吗,如
set Request timed out.=应答请求超时.
set TTL Expired in Transit= 所需跃点的数目超过了“生存时间”(TTL)
set Approximate round trip times in milli-seconds:=以毫秒为单位的大约来回行程的时间:
这样在命令行好像行,但在这批处理中好像不行,变量名不行有空格是吗,变量值能有空格的吗,如果能就先设置一个变量为英文的行吗,如
set imedout=Request timed out.
set imedout=应答请求超时.
因为还没理解所以还没法自己测试,有劳再看看。
[ Last edited by yangzhiyi on 2006-11-1 at 01:56 AM ]