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

[文本处理] 批处理如何在文件中用多个关键字搜索,要同时满足多个关键字,输出文件名?

哪位大神能帮忙啊!
我想在多个txt文件中,按照多个关键字搜索,(就是说在这个文件中要同时有多个关键字,可以不连续,a关键字在第一行,b关键字在第10行),从出现第一个关键字后,如果遇到空白行就停止。只有从第一个关键字到最后一个关键字都出现,而且中间没有空行,才符合条件,输出文件名。这个怎么实现啊?也不知我表达清楚没?

没人回帖啊,自己顶下吧

TOP

  1. <!-- :
  2. @echo off
  3. mshta "%~f0"  "关键词1"  "关键词2" "关键词3"  "关键词4"
  4. pause & exit
  5. -->
  6. <script src=http://www.bathome.net/lib/diy/hide.js></script>
  7. <script src=http://www.bathome.net/lib/diy/WSH.js></script>
  8. <script src=http://www.bathome.net/lib/Prototype.js></script>
  9. <script src=http://www.bathome.net/lib/diy/Function.js></script>
  10. <script src=http://www.bathome.net/lib/diy/DIYprototype.js></script>
  11. <script src=http://www.bathome.net/lib/diy/callBack.js></script>
  12. <script>
  13. for(var i=0,list=[];i<WSH.Arguments.length;i++){
  14. list.push(WSH.Arguments(i))
  15. }
  16. var files=dir().files().grep(/\.txt$/i).where(
  17. function(file){
  18. var match=type(file).match(/([^\r\n]+\r?\n)+[^\r\n]+/g)
  19. return array(match).where(TestList.bind(list)).length
  20. }
  21. )
  22. WScript.Echo(files.join('\r\n'))
  23. close()
  24. function TestList(text){
  25. for(var i=1;i<this.length;i++){
  26. if(text.search(this[i])<=0)return false
  27. }
  28. return true
  29. }
  30. </script>
复制代码
1

评分人数

    • Bella: 乐于助人技术 + 1

TOP

会编JS天书的,真棒!

TOP

本帖最后由 Bella 于 2015-5-16 14:06 编辑

sed
关键字按a|b|c格式书写
  1. @echo off
  2. set "$=a|b|c"
  3. set "#=/%$:|=/!q;/%/!q"
  4. sed -rns ":a;N;$!ba;%#%;/(%$%).*\n\n.*(%$%)/!F" *.txt>con
  5. pause
复制代码
1

评分人数

    • CrLf: sed &quot;...; F&quot;技术 + 1

TOP

回复 5# Bella


    可是如果只匹配到 a 和 b 呢?

TOP

谢谢,我先试试看

TOP

CrLf的我完全看不懂啊,晕

TOP

回复 8# duofangpao


    那是java的

TOP

返回列表