标题: [文本处理] 如何提取文本中包含指定关键字/指定字符串的行? [打印本页]
作者: 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 编辑
- @echo off
- rem 设置源目录,不可省略最后的\
- set "SrcDir=d:\test"
- rem 设置输出文件路径
- set "OutFile=d:\test\结果.log"
- (for /f "delims=" %%a in ('dir /a-d /s /b *.txt') do (
- for /f "delims=" %%i in ('findstr /n ".*" "%%a"') do (
- set "var=%%i"
- setlocal enabledelayedexpansion
- set var=!var:*:=!
- echo;!var!|findstr /r "中国"
- endlocal
- )))>"%OutFile%"
- 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- @echo off
- findstr "中国" a.txt > b.txt
复制代码
如果还是不行,请把你的 a.txt 压缩之后传上来我试试。
作者: slore 时间: 2018-3-19 18:47
findstr没出来,可能是文件编码问题。
utf8?
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |