Board logo

标题: [文本处理] 批处理如何删除指定范围内容文本,保留最后一个类似内容? [打印本页]

作者: lateol    时间: 2012-11-13 19:11     标题: 批处理如何删除指定范围内容文本,保留最后一个类似内容?

文本内容如下:
%
(MSN)
(PROGRAM NAME: 324B1A)
(Time: Tue Nov 06 20:39:03 2012)
(Cutter Name: D12)
G91G28Z0.
G90G54.1P45G00X0.Y0.
G5.1Q1
G00 G90 X-32.328 Y-44. S3000 M03
Z60.
Z50.5
Z49.555
G01 Z49.055 F1000.

G00 Z60.
G91G28Z0.
M05
M09
M30
%
%
(MSN)
(PROGRAM NAME: 324B1A)
(Time: Tue Nov 06 20:39:03 2012)
(Cutter Name: D12)
G91G28Z0.
G90G54.1P45G00X0.Y0.
G5.1Q1
G00 G90 X-32.328 Y-44. S3000 M03
Z60.
Z50.5
Z49.555
G01 Z49.055 F1000.

G00 Z60.
G91G28Z0.
M05
M09
M30
%
%
(MSN)
(PROGRAM NAME: 324B1A)
(Time: Tue Nov 06 20:39:03 2012)
(Cutter Name: D12)
G91G28Z0.
G90G54.1P45G00X0.Y0.
G5.1Q1
G00 G90 X-32.328 Y-44. S3000 M03
Z60.
Z50.5
Z49.555
G01 Z49.055 F1000.

G00 Z60.
G91G28Z0.
M05
M09
M30
%

要求批量出来的结果如下:
%
(MSN)
(PROGRAM NAME: 324B1A)
(Time: Tue Nov 06 20:39:03 2012)
(Cutter Name: D12)
G91G28Z0.
G90G54.1P45G00X0.Y0.
G5.1Q1
G00 G90 X-32.328 Y-44. S3000 M03
Z60.
Z50.5
Z49.555
G01 Z49.055 F1000.

G00 Z60.
G91G28Z0.

(MSN)
(PROGRAM NAME: 324B1A)
(Time: Tue Nov 06 20:39:03 2012)
(Cutter Name: D12)
G91G28Z0.
G90G54.1P45G00X0.Y0.
G5.1Q1
G00 G90 X-32.328 Y-44. S3000 M03
Z60.
Z50.5
Z49.555
G01 Z49.055 F1000.

G00 Z60.
G91G28Z0.

(MSN)
(PROGRAM NAME: 324B1A)
(Time: Tue Nov 06 20:39:03 2012)
(Cutter Name: D12)
G91G28Z0.
G90G54.1P45G00X0.Y0.
G5.1Q1
G00 G90 X-32.328 Y-44. S3000 M03
Z60.
Z50.5
Z49.555
G01 Z49.055 F1000.

G00 Z60.
G91G28Z0.
M05
M09
M30
%


M05
M09
M30
%
%
删掉,
但要保留最后的
M05
M09
M30
%


作者: apang    时间: 2012-11-13 22:22

  1. Set FSO = CreateObject("Scripting.FileSystemObject")
  2. Text = FSO.OpenTextFile("a.txt",1).ReadAll
  3. Str = "M05"&vbCrLf&"M09"&vbCrLf&"M30"&vbCrLf&"%"&vbCrLf&"%"
  4. FSO.CreateTextFile("b.txt",True).Write Replace(Text,Str,"")
复制代码
保存为vbs,试试看
作者: lateol    时间: 2012-11-13 23:43

回复 2# apang


   嗯 谢谢 是这样的效果。
但还是未满足批量,因为一个目录里有多个文本需要这样处理,处理后以原文名称命名。如果b...c..等下去的话会很麻烦的。
还是希望 能有CMD 或bat处理 感觉代码里的 a.txt 不能用 *.txt来表示。呵呵还是不太习惯用vbs。感谢了 apang !
作者: tmplinshi    时间: 2012-11-14 00:24

  1. fr *.txt -r:"M05\r\nM09\r\nM30\r\n%\r\n%"
复制代码

作者: CrLf    时间: 2012-11-14 01:22

猥琐一个,学某人的:
  1. @set @n=0//&md new&&(for %%a in (*.txt) do cscript.exe -nologo -e:jscript "%~f0"<"%%a">"new\%%a")&pause&exit/b
  2. WScript.Echo(WScript.StdIn.ReadAll().replace(/M05\r?\nM09\r?\nM30\r?\n\%\r?\n\%/g,''))
复制代码

作者: lateol    时间: 2012-11-14 01:30

回复 5# CrLf


    对! 就是这样 终于OK了,谢谢。
如果不建立 new文件夹 直接覆盖呢?代码要怎么改呢?




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2