Board logo

标题: [文本处理] BAT批量提取N个文本的关键词下一行内容,并保存到新的文本中 [打印本页]

作者: 不会飞的鱼    时间: 2020-9-24 17:37     标题: BAT批量提取N个文本的关键词下一行内容,并保存到新的文本中

我想求批处理bat,可以实现以下操作
1、批量提取某文件夹下N个文本的两个关键词字段(比如,姓名 ,单位)各自的下一行内容,输出结果到另一新文本文件中(整合.txt)
2、最好输出成这种格式:
姓名:王某某  单位:某某办事处

我在网上搜索,有些代码只能输出指定行的内容,没办法输出指定内容下一行,望大神们不吝赐教!!
作者: Batcher    时间: 2020-9-24 17:42

回复 1# 不会飞的鱼


    请选两个原始文本打包压缩传上来我试试
作者: 不会飞的鱼    时间: 2020-9-25 08:57

回复 2# Batcher
作者: Batcher    时间: 2020-9-25 14:36

回复 3# 不会飞的鱼


请参考Q-04和Q-05把bat文件和txt文件都保存为ANSI编码:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "NamePre=DummyStr"
  4. set "CompPre=DummyStr"
  5. (for /f "delims=" %%a in ('dir /b /a-d *.txt') do (
  6.     echo %%a
  7.     set "OutputStr="
  8.     for /f %%b in ('type "%%a"') do (
  9.         if "%%b" equ "姓名" (
  10.             set "NamePre=%%b"
  11.         ) else if "!NamePre!" neq "DummyStr" (
  12.             set "OutputStr=姓名:%%b"
  13.             set "NamePre=DummyStr"
  14.         ) else if "%%b" equ "单位名称" (
  15.             set "CompPre=%%b"
  16.         ) else if "!CompPre!" neq "DummyStr" (
  17.             set "OutputStr=!OutputStr! 单位:%%b"
  18.             echo,!OutputStr!
  19.             set "CompPre=DummyStr"
  20.         )
  21.     )
  22. ))>"整合.log"
复制代码

作者: 不会飞的鱼    时间: 2020-9-26 13:40

多谢大神帮忙,非常好用,解决了几天的工作量
作者: terse    时间: 2020-9-27 08:19

powershell
  1. $p = '姓名','单位名称'
  2. $path = "$PWD\*.txt"
  3. $Exclude ="$PWD\整合.txt"
  4. ((select-string -Path $path -Exclude $Exclude -pattern $p -Encoding default -SimpleMatch -context 0,1|% {$_.line + ':' + $_.context.postcontext})) -join ' '| Out-File '整合.txt'
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2