标题: [文本处理] 批处理如何替换txt文本中的多个字符串/关键词为其他内容? [打印本页]
作者: xxoo2 时间: 2016-5-4 23:01 标题: 批处理如何替换txt文本中的多个字符串/关键词为其他内容?
本帖最后由 pcl_test 于 2016-10-28 19:10 编辑
百度了很多,也在论坛搜索了很多,无论是bat还是vb,发现都只有单一的替换,也就是aaa替换bbb。
如果需要增加替换的就直接复制替换aaa的那条改为ccc替换bbb,这样的方法只适应替换不是很多的关键词。
那么问题来了,如果需要替换的有很多呢?怎么办?一个一个的添加太麻烦了,能不能把需要替换的关键词放在一个文本里,如果需要替换就调用这个文本里面的内容。
以下是一个一个添加替换文本内容的列子。- @echo off
- for /f "tokens=*" %%i in ('dir/s/b *.ini *.txt') do (
- (for /f "tokens=*" %%j in ('type "%%i"') do (
- set s=%%j
- set s=!s:aa=bb!
- set s=!s:ccc=ddd!
- 这里可以复制上面的,然后更改需要替换的
- echo !s!)>temp.txt
- type temp.txt>"%%i")
- del temp.txt
复制代码
求大神支招
作者: pcl_test 时间: 2016-5-4 23:48
本帖最后由 pcl_test 于 2016-10-10 22:06 编辑
假设有“文本.txt”,内容为abcd
vbs- arr = array("a|举","b|个","c|栗","d|子")
- file = "文本.txt"
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set f = fso.OpenTextFile(file, 1)
- txt = f.ReadAll
- f.Close
- For Each a In arr
- t = split(a, "|")
- txt = replace(txt, t(0), t(1))
- Next
- Set f = fso.OpenTextFile(file, 2)
- f.Write txt
- msgbox "Done"
复制代码
作者: xxoo2 时间: 2016-5-5 00:07
本帖最后由 xxoo2 于 2016-5-5 00:35 编辑
回复 2# pcl_test
先谢谢版主深夜回复。怪我没有把问题意思说清楚。
更形象的比如吧,
在文件里有个a文件,里面有很多行内容,如:111,222,333。然而有些内容是需要替换的,如;111替换成aaa,222替换成bbb,由于需要替换的内容也就是关键词太多了,就把aaa,bbb,ccc,ddd,单独放在b文件里,然后把批量替换后的文件输出保存为c文件。
我在上面贴的那个列子里面的aaa,ccc,就是a文件里面的内容,也是就被替换内容,bbb,ddd,就是b文件里的内容,也就是需要替换成的内容。如果a文件里还有要替换的eee,那b文件里肯定会有fff。
其实主要实现的替换就是类似于下面这两个。
set s=!s:aa=bbb!
set s=!s:ccc=ddd!
不同的是把需要替换成的bbb,ddd内容,放到一个文件里了,所以需要先检查a文件里有没有aaa,ccc,如果有就替换b文件里对应的内容,。
这样的话肯定有问题吧?如果把a文件里需要替换的关键词和b文件一样单独存一个文件,和b文件一样呢?
作者: jrx401 时间: 2016-5-17 15:51
这个我也很想知道,可否哪位大虾请教?
作者: gawk 时间: 2016-5-18 08:37
回复 3# xxoo2
可以考虑把a和b合并成一个文件,分成两列就行了,例如:
aaa bbb
ccc ddd
eee fff
两个文件反而不方便处理
作者: 云中漫步跑 时间: 2018-4-29 15:29
楼主解决了吗,我也有同样需求
作者: tigerpower 时间: 2018-5-2 17:59
参见此帖
注意,如果不在简体中文语言环境下,替换GBK编码的文字,会出错!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |