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

[文本处理] 批处理如何提取多个文本里指定字符串第一次出现所在的行内容?

[复制链接]
发表于 2017-4-8 18:05:15 | 显示全部楼层 |阅读模式
文本提取
文本关键字提取在文本中有很多符合项     如何只提取第一个符合的内容呢?
文本一                         文本二                          文本三                                                       
log1                                 log2                                log3                                                       
                                                                                                       
不合格        ab                不合格        s3                不合格        ab                                               
不合格        aa                合格        e6                      不合格        aa                                               
合格          ad                不合格        ee                合格              ad                                                                    
不合格        s3                不合格        ed                不合格        s3                                               
……                                       

有多个文本如上图 文件名是LOG1;LOG2;LOG3 内容如上 如何提取第一个合格和不合格品的代号生成新的文本啊
       
结果如下
        log1: 合格 ad
        log1:不合格ab
        log2: 合格e6
        Log2:不合格s3
        log3:合格ad
        log3:不合格ab
http://club.excelhome.net/forum. ... jN8MTMzOTA1Nw%3D%3D
 楼主| 发表于 2017-4-9 08:46:21 | 显示全部楼层
请老师指教
发表于 2017-4-9 10:45:26 | 显示全部楼层
回复 2# codegay


    报错信息:您指定的搜索不存在或已过期。
发表于 2017-4-9 10:51:34 | 显示全部楼层
  1. @echo off
  2. for /f "delims=" %%i in ('findstr "^合格" "log1.txt"') do (
  3.     echo %%i
  4.     goto next1
  5. )

  6. :next1
  7. for /f "delims=" %%i in ('findstr "^不合格" "log1.txt"') do (
  8.     echo %%i
  9.     goto next2
  10. )

  11. :next2
  12. pause
复制代码
 楼主| 发表于 2017-4-13 23:48:02 | 显示全部楼层
回复 4# ShowCode


    只能提取一个文本的数。多个文本没实现
 楼主| 发表于 2017-4-15 06:39:54 | 显示全部楼层
未见大神出现!
发表于 2017-4-15 18:47:13 | 显示全部楼层
  1. @echo off
  2. for /f "delims=" %%a in ('dir /b /a-d "log*.txt"') do (
  3.     call :GetGood "%%a"
  4. )
  5. goto :end

  6. :GetGood
  7. for /f "delims=" %%i in ('findstr "^合格" "%~1"') do (
  8.     echo "%~1" %%i
  9.     goto :GetBad
  10. )

  11. :GetBad
  12. for /f "delims=" %%i in ('findstr "^不合格" "%~1"') do (
  13.     echo "%~1" %%i
  14.     goto :eof
  15. )

  16. :end
  17. pause
复制代码
发表于 2017-4-15 18:51:00 | 显示全部楼层
回复 7# ShowCode


    For/r即可,用Dir+For/F会拉慢速度
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 19:51 , Processed in 0.022339 second(s), 10 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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