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

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

[复制链接]
发表于 2020-9-24 17:37:04 | 显示全部楼层 |阅读模式
我想求批处理bat,可以实现以下操作
1、批量提取某文件夹下N个文本的两个关键词字段(比如,姓名 ,单位)各自的下一行内容,输出结果到另一新文本文件中(整合.txt)
2、最好输出成这种格式:
姓名:王某某  单位:某某办事处

我在网上搜索,有些代码只能输出指定行的内容,没办法输出指定内容下一行,望大神们不吝赐教!!
发表于 2020-9-24 17:42:00 | 显示全部楼层
回复 1# 不会飞的鱼


    请选两个原始文本打包压缩传上来我试试
 楼主| 发表于 2020-9-25 08:57:07 | 显示全部楼层
回复 2# Batcher
发表于 2020-9-25 14:36:14 | 显示全部楼层
回复 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:37 | 显示全部楼层
多谢大神帮忙,非常好用,解决了几天的工作量
发表于 2020-9-27 08:19:41 | 显示全部楼层
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'
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 04:29 , Processed in 0.018210 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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