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

[文本处理] [已解决] 批处理如何批量提取文本内指定行后连续的特定行内容?

本帖最后由 Ru_Evan 于 2023-10-14 01:25 编辑

例如文本000.txt内容:
abcdef:
   123456
   234567
bcdefg:
   345678
   456789
cdefgh:
   56789A
   6789AB
即:结尾带:号的行,行前没有空格,其余的行前都带有3个空格;

需求:
将带有字符“bcdefg”的行后面连续的行前带3个空格的行提取出来,也就是:“   345678”和“   456789”
1

评分人数

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

本帖最后由 Ru_Evan 于 2023-10-14 13:54 编辑

回复 7# qixiaobin0715

考虑周全,代码精简,运行快速。。十分感谢!!
根据我这边实际情况,稍微改了下,运行得很好,再次感谢。。。
@echo off
set /p "var=提取词组项:"
set /p "out=输出文件名:"
set /a num=1

for /d %%a in (*) do (
        pushd "%~dp0\%%a"
        for /r %%b in (*.txt) do (
                setlocal enabledelayedexpansion
                echo,[!num!] "%%b"
                (for /f "usebackq delims=" %%i in ("%%b") do (
                        set "str=%%i"
                        if "!str:*:=!"=="" (
                                if not "!str:%var%=!"=="!str!" (
                                        set n=true
                                ) else if defined n (
                                        if "!str:~-1!"==":" (
                                                set n=
                                        ) else (
                                                echo,%%i
                                        )
                                )
                        )
                ))>>"%~dp0\%out%.txt"
                endlocal
                set /a "num+=1"
        )
)

pause
exit

TOP

返回列表