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

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

本帖最后由 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 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文件,否则会重复输出。

TOP

你这代码写的有问题,执行后如图

TOP

回复 3# joinerli
忘了把ENDLOCAL写上去了,二楼更正了,你再去试试

TOP

set /p "_=输入关键字"
findstr /i /c:"%_%" "%~f1">"%~f1.new.txt"
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复还是不行,生成出来的文件未空,也就是说,在目标txt文件里查找不出想要的结果 4# yhcfsr

TOP

回复 1# joinerli


test.bat
  1. @echo off
  2. findstr "中国" a.txt > b.txt
复制代码
如果还是不行,请把你的 a.txt 压缩之后传上来我试试。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

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

TOP

返回列表