You need to enable JavaScript to run this app. 如何改造批处理脚本批量提取多嵌套目录下TXT的指定标记区间文本
优惠活动
大模型
产品
解决方案
定价
更多

如何改造批处理脚本批量提取多嵌套目录下TXT的指定标记区间文本

批处理提取脚本批量改造方案
  • 递归遍历:通过for /r指令扫描源根目录下所有层级的TXT文件,覆盖多层嵌套子文件夹中的千余个零散命名文件
  • 目录镜像:处理每个文件时自动截取源文件相对根目录的路径片段,在输出根目录下自动创建对应的嵌套文件夹,保证输出目录结构和源目录完全对齐
  • 合并输出:单文件处理流程内连续完成两个标记区间的内容抓取,直接顺序写入和源文件同名的输出文件,不会生成两个拆分的独立文件

可直接运行的改造后脚本

@echo off
setlocal enabledelayedexpansion

:: ========== 可修改配置区 ==========
set "SOURCE_ROOT=D:\你的源TXT根目录"
set "OUTPUT_ROOT=D:\提取结果输出目录"
set "MARK1_START=^name"
set "MARK1_END=^location"
set "MARK2_START=^City"
set "MARK2_END=^Place"
:: ==================================

:: 全路径递归扫描所有TXT文件
for /r "%SOURCE_ROOT%" %%f in (*.txt) do (
    :: 计算镜像目录路径
    set "CUR_FULL_PATH=%%~dpf"
    set "REL_PATH=!CUR_FULL_PATH:%SOURCE_ROOT%=!"
    set "TARGET_DIR=%OUTPUT_ROOT%\!REL_PATH!"

    :: 自动创建缺失的嵌套目录
    if not exist "!TARGET_DIR!" md "!TARGET_DIR!"

    set "OUTPUT_FILE=!TARGET_DIR!%%~nxf"
    :: 清空目标输出文件
    break > "!OUTPUT_FILE!"

    :: 提取第一组标记区间内容
    set "LINE_S1="
    set "LINE_E1="
    for /f "delims=" %%l in ('findstr /n /b /c:"%MARK1_START%" "%%f"') do set "LINE_S1=%%l"
    for /f "delims=" %%l in ('findstr /n /b /c:"%MARK1_END%" "%%f"') do set "LINE_E1=%%l"
    if defined LINE_S1 if defined LINE_E1 (
        for /f "tokens=1,2 delims=:" %%a in ("!LINE_S1! !LINE_E1!") do (
            if %%a lss %%b (
                set /a "SKIP1=%%a - 1"
                for /f "delims=" %%o in ('more +!SKIP1! "%%f"') do echo %%o >> "!OUTPUT_FILE!"
            )
        )
    )

    :: 提取第二组标记区间内容(追加到同一文件)
    set "LINE_S2="
    set "LINE_E2="
    for /f "delims=" %%l in ('findstr /n /b /c:"%MARK2_START%" "%%f"') do set "LINE_S2=%%l"
    for /f "delims=" %%l in ('findstr /n /b /c:"%MARK2_END%" "%%f"') do set "LINE_E2=%%l"
    if defined LINE_S2 if defined LINE_E2 (
        for /f "tokens=1,2 delims=:" %%a in ("!LINE_S2! !LINE_E2!") do (
            if %%a lss %%b (
                set /a "SKIP2=%%a - 1"
                for /f "delims=" %%o in ('more +!SKIP2! "%%f"') do echo %%o >> "!OUTPUT_FILE!"
            )
        )
    )
)

echo 全量文件处理完成
pause

使用注意事项

  • 配置区的路径和标记规则可直接替换为实际值,路径不要带多余的首尾空格
  • 脚本匹配标记时默认从行首开始匹配,若实际标记存在前后缀,可直接修改MARK变量的匹配规则
  • 遇到没有对应标记的文件时脚本会自动跳过,不会中断全流程处理
  • 如需在两组提取内容之间加分隔空行,可在两组提取逻辑的中间位置添加echo. >> "!OUTPUT_FILE!"语句

内容的提问来源于stack exchange,提问作者JR Santos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.30 00:15:03