中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-10 07:58
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于批量文本替换的疑问?(处理子目录会出错) 查看 943 回复 9
楼 主 关于批量文本替换的疑问?(处理子目录会出错) 发表于 2008-11-10 17:46 ·  中国 西藏 拉萨 电信
新手上路
积分 15
发帖 15
注册 2008-10-13 18:28
17年会员
UID 128279
性别 男
状态 离线
高手请看看这段文本替换的代码:

@echo off
:begin
echo 目录:
set/p ulr=""
if exist "%ulr%" goto tihuan
cls&echo 输入错误!&goto begin
:tihuan
for /r "%ulr%" %%i in (*.txt) do (
for /f "delims=" %%a in (%%~si) do (
set a=%%a
setlocal enabledelayedexpansion
set b=!a:张三,“李四”王老五=张三/李四:王老五!
set c=!b:~今天天气真好~=阳光明媚!
echo.!c!>>"%%~dpni"已替换.txt
endlocal
) )
pause
这段代码可以正确处理输入路径的根目录下的文件,但是在处理子目录的时候会出错,有时候是重复替换(如替换后会出现两个王老五),有时候会在替换后的内容后附加文件所在路径。
希望各位高手能解决这个问题,可以在这段代码基础上修改,也可以换个思路重新写代码。谢谢!!!
2 怎么没人回答我啊 发表于 2008-11-11 10:30 ·  中国 西藏 拉萨 电信
新手上路
积分 15
发帖 15
注册 2008-10-13 18:28
17年会员
UID 128279
性别 男
状态 离线
怎么没人回答我啊,自己顶起来
3 发表于 2008-11-11 10:39 ·  中国 江西 赣州 安远县 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
set c=!b:~今天天气真好~=阳光明媚!

~ 符号能替换成功?!
4 可以的啊,我试过的 发表于 2008-11-11 10:40 ·  中国 西藏 拉萨 电信
新手上路
积分 15
发帖 15
注册 2008-10-13 18:28
17年会员
UID 128279
性别 男
状态 离线
可以的啊,我试过的,符号能替换
5 发表于 2008-11-11 12:06 ·  中国 江西 赣州 安远县 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
Originally posted by cnxyc at 2008-11-11 10:40 AM:
可以的啊,我试过的,符号能替换

不行,绝对不行 >_<
6 发表于 2008-11-11 12:11 ·  中国 江西 赣州 安远县 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
而且我用 1 楼的代码测试,会陷入循环,一共生成 82 个新文件:

1.txt
1已替换.txt
1已替换已替换.txt
1已替换已替换已替换.txt
1已替换已替换已替换已替换.txt
1已替换已替换已替换已替换已替换.txt
1已替换已替换已替换已替换已替换已替换.txt
1已替换已替换已替换已替换已替换已替换已替换.txt
1已替换已替换已替换已替换已替换已替换已替换已替换.txt
1已替换已替换已替换已替换已替换已替换已替换已替换已替换.txt
... ...

最后一个是:

1已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换已替换.txt

[ Last edited by tireless on 2008-11-11 at 12:27 ]
7 发表于 2008-11-11 12:17 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
我试了下1楼的代码,会把所有文件的内容全换成 b:~今天天气真好~=阳光明媚
无法实现替换
8 发表于 2008-11-11 12:23 ·  中国 江西 赣州 安远县 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
Originally posted by 不得不爱 at 2008-11-11 12:17 PM:
我试了下1楼的代码,会把所有文件的内容全换成 b:~今天天气真好~=阳光明媚
无法实现替换

就是嘛。不会出现 6 楼说的循环?
9 ????? 发表于 2008-11-12 17:48 ·  中国 西藏 拉萨 电信
新手上路
积分 15
发帖 15
注册 2008-10-13 18:28
17年会员
UID 128279
性别 男
状态 离线
确实是的,是我不够仔细。那实现这个功能应该如何写呢?望指教!!!
10 发表于 2008-11-12 22:59 ·  中国 辽宁 大连 电信
新手上路
积分 8
发帖 8
注册 2008-06-21 17:12
18年会员
UID 120679
性别 男
状态 离线
学习一下哈哈
好东西
论坛跳转: