![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-26 02:59 |
共 47,813 主题排行 / 349,918 发帖 / 今日 0 篇 / 48,275 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 条件文本文件替换[已解答] |
| 可打印版本 3,731 / 45 |
| 第16楼 yoyodos | 发表于 2007-09-24 13:00 |
| 初级用户 发帖 59 积分 128 | |
|
很容易了,把echo 变量 改为echo 到文件就行了
|
|
| 第17楼 123cainiao | 发表于 2007-09-24 13:02 |
| 初级用户 发帖 41 积分 97 | |
Originally posted by yoyodos at 2007-9-24 01:00 PM: 呵呵,谢谢你.我明白了. |
|
| 第18楼 yoyodos | 发表于 2007-09-24 13:08 |
| 初级用户 发帖 59 积分 128 | |
|
一起学习。。哈哈
|
|
| 第19楼 yoyodos | 发表于 2007-09-24 15:01 |
| 初级用户 发帖 59 积分 128 | |
|
我也贴一个,哈哈
[ Last edited by yoyodos on 2007-9-24 at 03:02 PM ] |
|
| 第20楼 123cainiao | 发表于 2007-09-24 15:51 |
| 初级用户 发帖 41 积分 97 | |
Originally posted by yoyodos at 2007-9-24 03:01 PM: |
|
| 第21楼 yoyodos | 发表于 2007-09-24 16:10 |
| 初级用户 发帖 59 积分 128 | |
|
不太明白你的意思,
思路就是将每一行字符串的 “姓名” 替换成 "abcd rster_www_er 姓 名" 是不是就可以呢? 哈哈 |
|
| 第22楼 123cainiao | 发表于 2007-09-24 16:40 |
| 初级用户 发帖 41 积分 97 | |
Originally posted by yoyodos at 2007-9-24 04:10 PM: 不是的,我的意思是作为通用性强的搜索语句,采用模糊定位查找,比采用按照分割符号来查找的方式更加实用。 比如最开始的ab.txt文件里的内容: 姓名"张三",ID'102' ,tel'0102211',0,25,11 姓名"李似答",ID'102' ,tel'0202211',0,25,11 姓名"王二",ID'102' ,tel'01023311',0,25,11 这是非常工整的 要是不工整的,变为: abcd rster_www_er 姓 名 "张三",ID'102' ,tel'0102211',0,25,11 abcd ,er 姓 名 "李似答",ID'102' ,tel'0202211',0,25,11 abcd rster,www,r 姓 名 "王二",ID'102' ,tel'01023311',0,25,11 这样的格式,严格以分割符查找的设计思路,几乎用不成,而采用模糊查找才能实现。 总的来说就是无论你每行文字变成什么样,在每行任何不同位置变换,都能实现替换功能。 [ Last edited by 123cainiao on 2007-9-24 at 04:43 PM ] |
|
| 第23楼 yoyodos | 发表于 2007-09-24 17:18 |
| 初级用户 发帖 59 积分 128 | |
|
晕,以姓名作分隔符不就行了吗
在delims=后面写姓名,姓 名,姓 名。。。。就能得到后面的名字了啊 |
|
| 第24楼 123cainiao | 发表于 2007-09-24 18:49 |
| 初级用户 发帖 41 积分 97 | |
Originally posted by yoyodos at 2007-9-24 05:18 PM: 谢谢你回答,经过反复测试,做了适当调整,可以了。 你的代码适用性能是非常好的。再次感谢! |
|
| 第25楼 terse | 发表于 2007-09-24 19:13 |
| 银牌会员 发帖 946 积分 2,404 | |
|
我也来一段学习
@echo off setlocal enabledelayedexpansion set mn=0 for /f "tokens=1* delims=," %%i in (ab.txt) do ( set data=%%i%%j set /a mn+=1 for /f "tokens=1* delims=:" %%a in ('findstr /n .* cd.txt') do ( if !mn! EQU %%a set data=!data:%%i=姓名"%%b",! ) echo !data!>>c12.txt ) pause |
|
| 第26楼 123cainiao | 发表于 2007-09-25 13:25 |
| 初级用户 发帖 41 积分 97 | |
Originally posted by terse at 2007-9-24 07:13 PM: 以上所有回复的参考答案中terse给的适应性能最强,可以不加修改完全适应通用性文件的查找替换,只许需要把 姓名 字段替换为你要查找的即可. 谢谢terse |
|
| 第27楼 123cainiao | 发表于 2007-09-25 13:43 |
| 初级用户 发帖 41 积分 97 | |
|
问题的延伸,看看下面的情况会用到很多 如果把问题延伸,比如ab.txt文件只有这么一行
姓名"张三",ID'102' ,tel'0102211',0,25,11 现在cd.txt文件还是不变: 赵括 王彬 李铃 。。。。。 可否做到从ab.txt文件里替换第一行后的姓名后,直接可以复制这种格式,生成一个完全和cd.txt文件行数一致的文件ef.txt: 姓名"赵括",ID'102' ,tel'0102211',0,25,11 姓名"王彬",ID'102' ,tel'0102211',0,25,11 姓名"李铃",ID'102' ,tel'0102211',0,25,11 ........ 这里问题就不单单是对等行替换了,需要涉及复制,想来还是会复杂一些。 |
|
| 第28楼 terse | 发表于 2007-09-25 14:23 |
| 银牌会员 发帖 946 积分 2,404 | |
|
@echo off
setlocal enabledelayedexpansion for /f "tokens=1* delims=," %%i in (ab.txt) do ( set data=%%j ) for /f "tokens=1* delims=:" %%a in (cd.txt) do ( >>c12.txt echo 姓名"%%a",!data! ) pause |
|
| 第29楼 yoyodos | 发表于 2007-09-25 14:29 |
| 初级用户 发帖 59 积分 128 | |
|
terse回答的很好呀,哈,123cainiao还有问题没??我也练练
|
|
| 第30楼 123cainiao | 发表于 2007-09-25 16:37 |
| 初级用户 发帖 41 积分 97 | |
Originally posted by yoyodos at 2007-9-25 02:29 PM: 呵呵,谢谢各位回答,不同的程序表达方式,达到相同的目的,值得好好研究. 顺祝大家中秋快乐,合家幸福! |
|
| 上一页 1 2 3 4 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |