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

[文本处理] 【已解决】批处理查找并替换字符串

本帖最后由 yearharvest 于 2013-11-8 21:59 编辑

把当前文件夹中指定后缀名的文件中的所有类似\pos(x,y)的字符串(x和y都是数字)替换成\pos(m*x,n*y),m和n也是数字。也就是字符串\pos(x,y)中的x和y乘上一个倍数。能支持各种文件编码

比如说a.txt里
  1. \pos(100,200)\pos(100,200)\pos(100,200)
  2. \pos(100,200)\pos(100,200)
  3. \pos(100,200)
复制代码
x乘1.5,y乘2的话变成
  1. \pos(150,400)\pos(150,400)\pos(150,400)
  2. \pos(150,400)\pos(150,400)
  3. \pos(150,400)
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

两个方法处理下面这个文件都有问题,用2楼的处理后变成空文件,用3楼的报错“无效的过程调用或参数”,好像是因为编码的原因,然后我把编码转换成UTF-8,但是用2楼和3楼处理后都会乱码,请问这要怎么解决?
还有3楼的有没有办法像2楼可以处理同一后缀名的多个文件?

TOP

回复 5# apang


  编码是UTF-8的话又乱码了

TOP

回复 6# terse


    不支持小数,如果我要乘1.5的话就不行了,不过这是批处理本身不支持小数的原因,有没有其他办法支持小数?

TOP

回复 12# apang


    只是刚好我拿来测试的几个文件编码都不相同,能解决的话最好,不能或者解决起来麻烦的话就算了

TOP

回复 15# terse


    昨天忘了看,今天又有事现在才回来,多谢了,还有楼上的几位也是

TOP

回复 15# terse


    试了一下,发现文件名里有中括号的就会报一大堆错,不过这倒没什么关系,改下文件名就是了

TOP

本帖最后由 yearharvest 于 2013-11-5 21:43 编辑

是中括号,比如把文件命名成  [a].txt

TOP

回复 21# terse


    编码没什么问题,也没发现其他问题

TOP

回复 22# DAIC


    测试一下没发现什么问题

TOP

本帖最后由 yearharvest 于 2013-11-7 23:42 编辑

回复 21# terse


    刚刚又发现一个问题,就是一行匹配多个的话只会处理最后一个。看代码是通过捕获组修改值然后字符串拼接起来,这样的话确实只能一行处理一个,像13的用replace函数的话就没问题。

    比如文件内容下面这种情况:
  1. \pos(100,200)\pos(100,200)\pos(100,200)
  2. \pos(300,400)\pos(300,400)
  3. \pos(500,600)
复制代码

TOP

这确实是我的不对,麻烦各位了,这贴就这样结了吧,后面的我自己试着改改

TOP

回复 31# wscript


    是可以完美解决,不过毕竟别人也回复了,我也只是把他们代码里发现的问题告诉他们

TOP

返回列表