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

[文本处理] 批处理如何实现多个txt文本截取固定值前后的内容?

[复制链接]
发表于 2021-9-7 17:59:33 | 显示全部楼层 |阅读模式
已知文件夹test下面有qq-001、qq-002~qq-985个txt文本文件,每个文件内有systeminfo:、hardinfo、softinfo、appinfo、userinfo等字段;
每个字段后面包含不同文字信息,现在的需求是根据这些字段截取出后面的信息,并重新创建到新的txt文本内,如new_qq-001、new_qq-002。
发表于 2021-9-7 18:21:04 | 显示全部楼层
是在同一行还是在不同的行
发表于 2021-9-7 20:12:29 | 显示全部楼层
回复 1# e2fsck
  1. @echo off
  2. set var=systeminfo: hardinfo softinfo appinfo userinfo
  3. setlocal enabledelayedexpansion
  4. for %%i in (*.txt) do (
  5.     (for /f "delims=" %%a in ('findstr /r "%var%" %%i') do (
  6.         set "str=%%a"
  7.         for %%b in (%var%) do set str=!str:*%%b=!
  8.         echo,!str!
  9.     ))>new_%%i
  10. )
  11. pause
复制代码
发表于 2021-9-8 09:54:13 | 显示全部楼层
回复 1# e2fsck


    请把文本内容发出来以便更好的说明需求。如果文件太大,请把附件上传到阿里云盘或百度网盘。
 楼主| 发表于 2021-9-8 15:42:50 | 显示全部楼层
本帖最后由 e2fsck 于 2021-9-8 15:46 编辑

举例:
文本名qq-001.txt
内容如下:
System Info:
      Computer Name =  qq-001
      OS       Type =  Windows 10 企业版 64-bit (10.0, Build 17763) (17763.rs5_release.180914-1434)
      System  Model =  123456789
      CPU     Model =  Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz (6 CPUs), ~2.8GHz
      RAM      Size =  8192MB RAM

DisplayCard :
      Display  Card =  NVIDIA GeForce GTX 1060 3GB
      DisplayMemory =  7039 MB

Mother Board:
      Manufacturer     = Dell

      MotherBoard Model= 36EF


Hard Info:
      Model=ST1000DM010-2EP102

      Size=1000202273280

需要提取这些文本中System Info:和Hard Info:两个字段后不同行的内容,提取保存到new_qq-001.txt新文本,仅限这2个指定字段,不包含其他字段,如提取System Info:后的内容,不包含Diskplay Card:字段
 楼主| 发表于 2021-9-8 15:46:54 | 显示全部楼层
回复 4# Batcher

举例:
文本名qq-001.txt
内容如下:
System Info:
      Computer Name =  qq-001
      OS       Type =  Windows 10 企业版 64-bit (10.0, Build 17763) (17763.rs5_release.180914-1434)
      System  Model =  123456789
      CPU     Model =  Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz (6 CPUs), ~2.8GHz
      RAM      Size =  8192MB RAM

DisplayCard :
      Display  Card =  NVIDIA GeForce GTX 1060 3GB
      DisplayMemory =  7039 MB

Mother Board:
      Manufacturer     = Dell

      MotherBoard Model= 36EF


Hard Info:
      Model=ST1000DM010-2EP102

      Size=1000202273280

需要提取这些文本中System Info:和Hard Info:两个字段后不同行的内容,提取保存到new_qq-001.txt新文本,仅限这2个指定字段,不包含其他字段,如提取System Info:后的内容,不包含Diskplay Card:字段
 楼主| 发表于 2021-9-8 15:47:37 | 显示全部楼层
回复 3# qixiaobin0715


这个实测不行,提取的内容不对
发表于 2021-9-8 20:29:11 | 显示全部楼层
  1. @echo off
  2. set var="System Info:" "Hard Info:"
  3. for %%i in (*.txt) do (
  4.     (for /f "delims=" %%a in (%%i) do (
  5.                 if defined f (
  6.                         echo;%%a|findstr ":">nul&&set f=||echo %%a
  7.                 )
  8.                 for %%b in (%var%) do (
  9.                         if "%%a"=="%%~b" set f=1
  10.                 )
  11.     ))>new_%%i
  12. )
  13. pause
复制代码
发表于 2021-9-8 21:19:33 | 显示全部楼层
回复 7# e2fsck
  1. @echo off
  2. set var=systeminfo: hardinfo: softinfo: appinfo: userinfo:
  3. setlocal enabledelayedexpansion
  4. for %%i in (*.txt) do (
  5.     (for /f "delims=" %%a in ('findstr /n ".*" %%i') do (
  6.         set "str=%%a"
  7.         set str=!str:*:=!
  8.         set str1=!str: =!
  9.         if "!str1:~-1!"==":" (
  10.             set n=false
  11.             for %%b in (%var%) do if /i "!str1!"=="%%b" set n=true&echo,!str!
  12.         ) else if "!n!"=="true" (
  13.             echo,!str!
  14.         )
  15.     ))>new_%%i
  16. )
  17. pause
复制代码
发表于 2021-9-8 22:05:54 | 显示全部楼层
以上代码经过单个文本测试。可忽略关键词字母大小写及排除关键词行多余空格的影响。
 楼主| 发表于 2021-9-9 13:44:56 | 显示全部楼层
回复 10# qixiaobin0715

谢谢关注,我测试了一下这个应该是通过=号作为关键信息去提取。如果文本内容没有=号的怎么提取?
前面文本都有X=X这样的格式。
假设其中一段是admin info:
内容
admin user1
admin user100
user 198
发表于 2021-9-9 13:52:18 | 显示全部楼层
非也非也!!!
9楼代码第2行最后面加上admininfo:,前面用空格隔开。
发表于 2021-9-9 14:08:08 | 显示全部楼层
回复 11# e2fsck
与等号一毛钱的关系也没有,代码第2行罗列的是去除所有空格的字段名。
 楼主| 发表于 2021-9-9 15:34:31 | 显示全部楼层
回复 13# qixiaobin0715


  确实可以了,牛逼,谢谢~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 01:40 , Processed in 0.034255 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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