标题: [文本处理] 批处理如何提取多个文本里指定字符串第一次出现所在的行内容? [打印本页]
作者: 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
- @echo off
- for /f "delims=" %%i in ('findstr "^合格" "log1.txt"') do (
- echo %%i
- goto next1
- )
-
- :next1
- for /f "delims=" %%i in ('findstr "^不合格" "log1.txt"') do (
- echo %%i
- goto next2
- )
-
- :next2
- pause
复制代码
作者: haichuan5121 时间: 2017-4-13 23:48
回复 4# ShowCode
只能提取一个文本的数。多个文本没实现
作者: haichuan5121 时间: 2017-4-15 06:39
未见大神出现!
作者: ShowCode 时间: 2017-4-15 18:47
- @echo off
- for /f "delims=" %%a in ('dir /b /a-d "log*.txt"') do (
- call :GetGood "%%a"
- )
- goto :end
-
- :GetGood
- for /f "delims=" %%i in ('findstr "^合格" "%~1"') do (
- echo "%~1" %%i
- goto :GetBad
- )
-
- :GetBad
- for /f "delims=" %%i in ('findstr "^不合格" "%~1"') do (
- echo "%~1" %%i
- goto :eof
- )
-
- :end
- pause
复制代码
作者: 老刘1号 时间: 2017-4-15 18:51
回复 7# ShowCode
For/r即可,用Dir+For/F会拉慢速度
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |