[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

文本提取
文本关键字提取在文本中有很多符合项     如何只提取第一个符合的内容呢?
文本一                         文本二                          文本三                                                       
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

请老师指教

TOP

回复 2# codegay


    报错信息:您指定的搜索不存在或已过期。

TOP

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

TOP

回复 4# ShowCode


    只能提取一个文本的数。多个文本没实现

TOP

未见大神出现!

TOP

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

TOP

回复 7# ShowCode


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

TOP

返回列表