中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-07 12:15
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 怎样批量替换字符串 查看 4,822 回复 19
16 发表于 2008-04-28 22:28 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
Originally posted by nipo at 2008-4-28 08:30 PM:
刚才试验了你的代码,真的非常高效,而且通用性强。

测试了一个比较复杂的文本,内容如下:

/////////////////////////////////////////////////////////////// ...


我说的高效是指速度快,用for /r是用for /f速度的两倍,(这个你可以测试)
------------------------
这个帖子是比较早的了,以前没有掌握endlocal所以以为会对某些字符过滤,看到你回帖现在才补上,其实你认真看我的代码有bug,会对;开头的行略去的,
我的代码和terse的代码基本上没什么区别。。。
再完善下:
@echo off
for /r d: %%i in (*.txt) do (
for /f "eol= delims=" %%a in (%%~si) do (
set a=%%a
setlocal enabledelayedexpansion
set b=!a:他=她!
echo.!b!>>"%%~dpni"_已替.txt
endlocal
) )

但还感觉可能对某些字符失效,望高人再完善
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
17 发表于 2008-04-28 23:43 ·  中国 辽宁 锦州 联通
中级用户
★★
积分 228
发帖 106
注册 2008-04-26 12:34
18年会员
UID 117003
性别 男
状态 离线
多谢你了!也看了你的一些其他贴子,很敬佩。

看到你的代码后,我一直在学习是怎么个作用机制。

承蒙夸奖,其实我学批处理时间不长。以前对涉及字符的处理缺乏认识,最近才知道,以前干的都是粗活儿,字符处理在批处理中的威力很大的。
18 发表于 2008-04-28 23:55 ·  中国 陕西 西安 电信
初级用户
替身
积分 122
发帖 17
注册 2008-03-27 10:12
18年会员
UID 114154
性别 男
状态 离线
那里,都是学习,我只是早来你几个月,别这么客气。
不过我现在的感觉是搞字符处理还是别用cmd,你学sed,要么VBS,他们高效且通用。
进入网盘(各种工具)
19 发表于 2008-04-29 00:05 ·  中国 辽宁 锦州 联通
中级用户
★★
积分 228
发帖 106
注册 2008-04-26 12:34
18年会员
UID 117003
性别 男
状态 离线
Originally posted by nipo at 2008-4-28 08:30 PM:
刚才试验了你的代码,真的非常高效,而且通用性强。

测试了一个比较复杂的文本,内容如下:

/////////////////////////////////////////////////////////////// ...


测试过程中,屡次修改,中间碰到几次小问题,可能是我操作上有错误。最近一次出现这样一个错误结果:在新文本中间的空行处出现”她=他“字符串。经仔细查找,发现是源文件被改成这样。改回来之后又正常了。

---------------------------------------------------------------------------------------------------------------

这个表述有点问题:

新文本是没有空行的,源文本才有。我反复修改测试之后,竟然在新、旧文本的2段之间出现批处理中的”她=他“字符串。不知怎么搞的。
并且在测试期间,还出现过“找不到驱动器”的错误提示,而经检查,路径没有错误。

斗胆怀疑一下:有没有可能在设置延迟变量方面存在什么问题?
20 发表于 2008-04-29 00:06 ·  中国 辽宁 锦州 联通
中级用户
★★
积分 228
发帖 106
注册 2008-04-26 12:34
18年会员
UID 117003
性别 男
状态 离线
sed、VBS我也想学,真的。不过,我是实用主义者,急用先学,急用现学,我就是这样摸到批处理这条路上来的,觉得比学编程来得直接~~

[ Last edited by nipo on 2008-4-29 at 12:17 AM ]
论坛跳转: