中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-24 06:55
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教:文件内容的判断和字符替换的批处理 查看 4,213 回复 16
16 发表于 2006-10-31 03:46 ·  中国 广东 清远 联通
高级用户
★★
积分 846
发帖 247
注册 2006-10-27 12:03
19年会员
UID 68504
性别 男
来自 湖南==》广东
状态 离线
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.
)
17 发表于 2006-10-31 06:27 ·  中国 广东 茂名 电信
中级用户
★★
积分 261
发帖 123
注册 2006-06-06 19:23
20年会员
UID 56648
状态 离线
这两句还是不明白啊,能再说说吗?
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 ]
论坛跳转: