[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何替换txt文本中的多个字符串/关键词为其他内容?

本帖最后由 pcl_test 于 2016-10-28 19:10 编辑

百度了很多,也在论坛搜索了很多,无论是bat还是vb,发现都只有单一的替换,也就是aaa替换bbb。
如果需要增加替换的就直接复制替换aaa的那条改为ccc替换bbb,这样的方法只适应替换不是很多的关键词。
那么问题来了,如果需要替换的有很多呢?怎么办?一个一个的添加太麻烦了,能不能把需要替换的关键词放在一个文本里,如果需要替换就调用这个文本里面的内容。

以下是一个一个添加替换文本内容的列子。
  1. @echo off
  2. for /f "tokens=*" %%i in ('dir/s/b *.ini *.txt') do (
  3. (for /f "tokens=*" %%j in ('type "%%i"') do (
  4. set s=%%j
  5. set s=!s:aa=bb!
  6. set s=!s:ccc=ddd!
  7. 这里可以复制上面的,然后更改需要替换的
  8. echo !s!)>temp.txt
  9. type temp.txt>"%%i")
  10. del temp.txt
复制代码
求大神支招
1

评分人数

本帖最后由 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文件一样呢?

TOP

返回列表