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

[文本处理] [已解决]批处理怎样提取包含关键词的行并保存?

本帖最后由 abyssxx 于 2021-2-22 17:48 编辑

首先感谢大家!春节快乐!
需要处理a.txt文件
文件内容例如:

西瓜XXXXXX
fffffffff
西瓜苹果xxxxxxxx
bbbbbbbbbbbb
香蕉苹果xxxxxxxx
aaaaaaaaa
ccccccc
葡萄西瓜xxxxxxxxx
葡萄xxxxxxxx

需要分别提取包含 西瓜,苹果,香蕉, 葡萄的行 分别保存到  西瓜.txt 苹果.txt 香蕉.txt 葡萄.txt 中,
但是 西瓜.txt 苹果.txt 香蕉.txt 葡萄.txt 中不能有重复提取的行,如果直接提取就会因为某行里面有两个关键词提取了两次
思路可以提取第一个关键词 西瓜 保存到西瓜.txt
然后删除a.txt里面包含西瓜的行,然后继续提取包含苹果 保存到苹果.txt 然后删除a.txt里面包含苹果的行,继续提取后面的
最后还要保存一个文件,最终数据.txt里面的数据是剔除了关键词的,内容为
fffffffff
bbbbbbbbbbbb
aaaaaaaaa
ccccccc
看了半天教程写了一个好像是可以了,但是不保存空txt文件该怎么写?
  1. @echo off
  2. set targe=''
  3. setlocal enabledelayedexpansion
  4. for /f %%I in (关键词.txt) do (
  5. findstr "%%I" 数据.txt > "%%I".txt
  6. findstr /v "%%I" 数据.txt > b.txt
  7. copy b.txt 数据.txt
  8. )
  9. pause
复制代码

正则匹配!  findstr 小文本适用。
QQ: 己阵亡
脚本优先 [PowerShell win10]

TOP

回复 1# abyssxx


    请举例说明“不保存空txt文件”是什么意思?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 qixiaobin0715 于 2021-2-22 10:49 编辑

有些地方表达的不太清楚,不知下面代码是否准确:
关键词文本一行一个关键词
  1. @echo off
  2. findstr /v /r /G:关键词.txt a.txt>最终数据.txt
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%a in ('findstr /r /G:关键词.txt a.txt') do (
  5.     set str=%%a
  6.     set n=0
  7.     for /f "delims=" %%b in (关键词.txt) do (
  8.         if not "!str:%%b=!"=="!str!" (
  9.             set /a n+=1
  10.             if !n!==1 set %%a=true&echo,%%a>>%%b.txt
  11.             if not defined %%a echo,%%a>>%%b.txt&set %%a=true
  12.         )
  13.     )
  14. )
  15. pause
复制代码

TOP

回复  abyssxx


    请举例说明“不保存空txt文件”是什么意思?
Batcher 发表于 2021-2-22 09:21



    就是有时候要处理的文本里面没有包含关键词的数据,输出的txt是空的,这种情况就不保存了

TOP

回复 3# Batcher


    就是有时候要处理的文本里面没有包含关键词的数据,输出的txt是空的,这种情况就不保存了

TOP

回复 4# qixiaobin0715


    可以用就是要这样的 谢谢

TOP

返回列表