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

[文本处理] 批处理如何提取指定文本中两个特定行之间的内容到新的文本

[复制链接]
发表于 2013-9-4 09:14:50 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-9-7 15:24 编辑

批处理怎样提取出一个文件指定字符串以后的内容,复制到新文件里
查找一个文件a.txt,一旦遇到关键字INCLUDE,则将INCLUDE之后的,一直到第一个空行为止的全体字符提取出来,复制到新文件header.txt里面。
注意,每行的字符串之间都有空格或者tab,复制的时候要去掉每行的空格和最后的\。

例如a.txt是
……
……
INCLUDE :=  \
                            ..\aa\include                    \
                            ..\bb\include                    \
                            ..\cc\include                     \

SCOUCE :=         \
……
……

则header.txt希望是
..\aa\include
..\bb\include
..\cc\include
发表于 2013-9-4 16:36:49 | 显示全部楼层

  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "tokens=1* delims=:" %%a in ('findstr /n .* a.txt') do (
  3.   set "str=%%b"
  4.   if "%%b" equ "" set "flag="
  5.   if defined flag (
  6.     set "str=!str: =!"
  7.     echo,!str:\=!
  8.   )
  9.   if "%%b" neq "" if "!str:INCLUDE=!" neq "!str!" set "flag=a"
  10. ))>header.txt
  11. start header.txt
复制代码
发表于 2013-9-4 20:25:59 | 显示全部楼层
回复 2# batman
    排除不需要的字符行,再for截取,你看呢
发表于 2013-9-5 23:01:57 | 显示全部楼层
@echo off

for /f  %%i in ('findstr "\include" 1.txt') do (
if  %errorlevel% equ 1 (

echo %%i >nul

) else (

   echo %%i
  

)

)>>2.txt
pause
发表于 2017-7-20 21:19:49 | 显示全部楼层
如果txt中有很多的INCLUDE :=  和 SCOUCE :=呢,并且我需要把它们之间的内容依次写进a.txt,b.txt,c.txt……
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 20:02 , Processed in 0.018354 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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