标题: [文本处理] [已解决]如何通过批处理,提取文本中以.START到.ENDS开头之间的段落到新的文本中 [打印本页]
作者: Cyccllee 时间: 2014-9-15 11:54 标题: [已解决]如何通过批处理,提取文本中以.START到.ENDS开头之间的段落到新的文本中
文本内容如下:
.START A1 Clk Clr Data Q QB
CB Clk Vd Vd PM25 3 250n
CB Clk Vd Vd PM25 3 250n
.ENDS A1
.START B1 v1p A B Out Obar Gn V
M1 1 B Gn 0 NM25 1.5 250n
M2 Ot A 0 NM25 1.5 250n
.ENDS B1
提取以.START到.ENDS开头字母之间的段落,并以.ENDS之后的一个单词作为每个新文件的文件名。
作者: apang 时间: 2014-9-15 13:41
- @echo off
- for /f "tokens=1*" %%a in (a.txt) do (
- if /i "%%a" == ".START" set flag=1
- if defined flag (
- echo,%%a %%b>>$
- if /i "%%a" == ".ENDS" (
- move $ "%%b.txt" & set "flag="
- )
- )
- )
- pause
复制代码
作者: Cyccllee 时间: 2014-9-15 13:51
回复 2# apang
感谢回答。
我试用了一下,把a.txt改成了我的文件名字,运行没反应。。。
作者: Cyccllee 时间: 2014-9-15 13:55
回复 2# apang
不好意思。。。太激动,把文件名写错了,你的答案已经完美的解决了我的问题,非常感谢。
作者: Cyccllee 时间: 2014-9-15 15:10
回复 2# apang
您好,再次麻烦一下。
还是差不多的问题,如果我想提取的文本内容,不包括.START和.ENDS本身行,只是它俩行之间的内容,该怎么修改?输出的文件名还是以上的要求。
不甚感激~~~
作者: apang 时间: 2014-9-15 16:20
本帖最后由 apang 于 2014-9-15 17:51 编辑
回复 5# Cyccllee - @echo off
- for /f "tokens=1*" %%a in (a.txt) do (
- if defined flag (
- if /i "%%a" == ".ENDS" (
- move $ "%%b.txt" & set "flag="
- ) else echo,%%a %%b>>$
- ) else if /i "%%a" == ".START" set flag=1
- )
- pause
复制代码
作者: Cyccllee 时间: 2014-9-15 16:58
回复 6# apang
提示系统找不到文件。这次确认文件名是对的。。。
作者: apang 时间: 2014-9-15 17:58
回复 7# Cyccllee
6楼已修改,如果文件名含空格,比如:a b c.txt,请将第2行改成:- for /f "tokens=1*" %%a in ('type "a b c.txt"') do (
复制代码
作者: Cyccllee 时间: 2014-9-15 18:49
回复 8# apang
太开心啦,试验已成功。。。感谢感谢~~
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |