Board logo

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

作者: haichuan5121    时间: 2017-4-8 18:05     标题: 批处理如何提取多个文本里指定字符串第一次出现所在的行内容?

文本提取
文本关键字提取在文本中有很多符合项     如何只提取第一个符合的内容呢?
文本一                         文本二                          文本三                                                       
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
作者: haichuan5121    时间: 2017-4-9 08:46

请老师指教
作者: ShowCode    时间: 2017-4-9 10:45

回复 2# codegay


    报错信息:您指定的搜索不存在或已过期。
作者: ShowCode    时间: 2017-4-9 10:51

  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
复制代码

作者: haichuan5121    时间: 2017-4-13 23:48

回复 4# ShowCode


    只能提取一个文本的数。多个文本没实现
作者: haichuan5121    时间: 2017-4-15 06:39

未见大神出现!
作者: ShowCode    时间: 2017-4-15 18:47

  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
复制代码

作者: 老刘1号    时间: 2017-4-15 18:51

回复 7# ShowCode


    For/r即可,用Dir+For/F会拉慢速度




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