找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 44826|回复: 6

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

[复制链接]
发表于 2016-5-4 23:01:07 | 显示全部楼层 |阅读模式
本帖最后由 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
复制代码
求大神支招

评分

参与人数 1PB -2 收起 理由
pcl_test -2 未按版规发帖

查看全部评分

发表于 2016-5-4 23:48:03 | 显示全部楼层
本帖最后由 pcl_test 于 2016-10-10 22:06 编辑

假设有“文本.txt”,内容为abcd
vbs
  1. arr = array("a|举","b|个","c|栗","d|子")
  2. file = "文本.txt"
  3. Set fso = CreateObject("Scripting.FileSystemObject")
  4. Set f = fso.OpenTextFile(file, 1)
  5. txt = f.ReadAll
  6. f.Close
  7. For Each a In arr
  8.     t = split(a, "|")
  9.     txt = replace(txt, t(0), t(1))
  10. Next
  11. Set f = fso.OpenTextFile(file, 2)
  12. f.Write txt
  13. msgbox "Done"
复制代码

评分

参与人数 1技术 +1 收起 理由
xxoo2 + 1 乐于助人

查看全部评分

 楼主| 发表于 2016-5-5 00:07:48 | 显示全部楼层
本帖最后由 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文件一样呢?
发表于 2016-5-17 15:51:12 | 显示全部楼层
这个我也很想知道,可否哪位大虾请教?
发表于 2016-5-18 08:37:08 | 显示全部楼层
回复 3# xxoo2


可以考虑把a和b合并成一个文件,分成两列就行了,例如:
aaa bbb
ccc ddd
eee fff
两个文件反而不方便处理

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 1111

查看全部评分

发表于 2018-4-29 15:29:57 | 显示全部楼层
楼主解决了吗,我也有同样需求
发表于 2018-5-2 17:59:32 | 显示全部楼层
参见此帖
注意,如果不在简体中文语言环境下,替换GBK编码的文字,会出错!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 06:21 , Processed in 0.019631 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表