Board logo

标题: [文本处理] 如何提取文本中包含指定关键字/指定字符串的行? [打印本页]

作者: joinerli    时间: 2018-3-16 10:58     标题: 如何提取文本中包含指定关键字/指定字符串的行?

本帖最后由 pcl_test 于 2018-3-16 14:54 编辑

假设a.txt文件中包含以下内容:
xxxxxxxxxxxxxx中国xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxx日本xxxxxxxxxxxx
xxxxxxxxxxxxxx中国xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxx美国xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxx中国xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxx中国xxxxxxxxxxxxxxxxx

我需要提前a.txt中所有包含‘中国’的行,到b.txt中
即我希望b.txt中的内容为在a.txt中所有包含‘中国’字符的全部行:
xxxxxxxxxxxxxx中国xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxx中国xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxx中国xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxx中国xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxx中国xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxx中国xxxxxxxxxxxxxxxxx
求大神给出bat代码,感谢
作者: yhcfsr    时间: 2018-3-16 13:25

本帖最后由 yhcfsr 于 2018-3-16 17:12 编辑
  1. @echo off
  2. rem 设置源目录,不可省略最后的\
  3. set "SrcDir=d:\test"
  4. rem 设置输出文件路径
  5. set "OutFile=d:\test\结果.log"
  6. (for /f  "delims=" %%a in ('dir /a-d /s /b *.txt') do (
  7. for /f  "delims=" %%i in ('findstr /n ".*" "%%a"') do (
  8.         set "var=%%i"
  9.         setlocal enabledelayedexpansion
  10.         set var=!var:*:=!
  11. echo;!var!|findstr /r "中国"
  12. endlocal
  13. )))>"%OutFile%"
  14. pause&exit
复制代码
说明:当输出文件和源文件处于同一目录时,输出结果不要保存为TXT文件,否则会重复输出。
作者: joinerli    时间: 2018-3-16 13:58

你这代码写的有问题,执行后如图
作者: yhcfsr    时间: 2018-3-16 17:13

回复 3# joinerli
忘了把ENDLOCAL写上去了,二楼更正了,你再去试试
作者: /zhqsystem/zhq    时间: 2018-3-16 22:15

set /p "_=输入关键字"
findstr /i /c:"%_%" "%~f1">"%~f1.new.txt"
作者: joinerli    时间: 2018-3-19 15:13

回复还是不行,生成出来的文件未空,也就是说,在目标txt文件里查找不出想要的结果 4# yhcfsr
作者: Batcher    时间: 2018-3-19 15:32

回复 1# joinerli


test.bat
  1. @echo off
  2. findstr "中国" a.txt > b.txt
复制代码
如果还是不行,请把你的 a.txt 压缩之后传上来我试试。
作者: slore    时间: 2018-3-19 18:47

findstr没出来,可能是文件编码问题。
utf8?




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