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

[文本处理] [已解决]如何通过批处理,提取文本中以.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之后的一个单词作为每个新文件的文件名。
1

评分人数

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

  1. @echo off
  2. for /f "tokens=1*" %%a in (a.txt) do (
  3.         if /i "%%a" == ".START" set flag=1
  4.         if defined flag (
  5.                 echo,%%a %%b>>$
  6.                 if /i "%%a" == ".ENDS" (
  7.                         move $ "%%b.txt" & set "flag="
  8.                 )
  9.         )
  10. )
  11. pause
复制代码
1

评分人数

TOP

回复 2# apang


感谢回答。

我试用了一下,把a.txt改成了我的文件名字,运行没反应。。。

TOP

回复 2# apang


不好意思。。。太激动,把文件名写错了,你的答案已经完美的解决了我的问题,非常感谢。

TOP

回复 2# apang


您好,再次麻烦一下。

还是差不多的问题,如果我想提取的文本内容,不包括.START和.ENDS本身行,只是它俩行之间的内容,该怎么修改?输出的文件名还是以上的要求。

不甚感激~~~

TOP

本帖最后由 apang 于 2014-9-15 17:51 编辑

回复 5# Cyccllee
  1. @echo off
  2. for /f "tokens=1*" %%a in (a.txt) do (
  3.         if defined flag (
  4.                 if /i "%%a" == ".ENDS" (
  5.                         move $ "%%b.txt" & set "flag="
  6.                 ) else echo,%%a %%b>>$
  7.         ) else if /i "%%a" == ".START" set flag=1
  8. )
  9. pause
复制代码

TOP

回复 6# apang


提示系统找不到文件。这次确认文件名是对的。。。

TOP

回复 7# Cyccllee


6楼已修改,如果文件名含空格,比如:a b c.txt,请将第2行改成:
  1. for /f "tokens=1*" %%a in ('type "a b c.txt"') do (
复制代码

TOP

回复 8# apang


太开心啦,试验已成功。。。感谢感谢~~

TOP

返回列表