楼 主
关于批量文本替换的疑问?(处理子目录会出错)
发表于 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 性别 男
状态 离线
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正