Board logo

标题: [文本处理] [已解决]根据一个文本中列出的字符串查找/提取另一个文本行首含有这些字符串的行 [打印本页]

作者: shimuren    时间: 2015-9-18 10:48     标题: [已解决]根据一个文本中列出的字符串查找/提取另一个文本行首含有这些字符串的行

有txt文本A,内容格式如图

txt文本B,内容格式如图

根据B中的内容查询A中的内容,如果有匹配则导出对应A文本中的该行,并保存为txt文件C
作者: flyinnet9    时间: 2015-9-18 10:55

本帖最后由 flyinnet9 于 2015-9-18 12:44 编辑

--------------
pcl大神已改,我也改改
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p n1=请拖入文件A,然后回车确认:
  4. set /p n2=请拖入文件B,然后回车确认:
  5. for /f "tokens=1* delims=-" %%a in (%n1%) do set #%%a=%%b
  6. for /f %%c in (%n2%) do echo %%c----!#%%c!>>c.txt
复制代码

作者: shimuren    时间: 2015-9-18 11:21

回复 2# flyinnet9


    谢谢,不好意思我表述有些错误
A文件内容是这样的

导出的时候,能不能不限制段数,只要是该行的内容就导出,不管其中有多少个 “----”
还有就是能不能不限制两个文件的的名字,比如直接将两个文件拖拽到图标上就自动执行
作者: flyinnet9    时间: 2015-9-18 11:28

回复 3# shimuren


    已改
作者: shimuren    时间: 2015-9-18 11:36

回复 4# flyinnet9


    嗯谢谢,
能不能不限制文件名呢?
作者: pcl_test    时间: 2015-9-18 11:42

回复 3# shimuren

拖曳文件到图标执行在你这个情况并不适合,因为选定文件时的顺序会导致不同的结果,除非分两次拖曳
作者: shimuren    时间: 2015-9-18 11:50

回复 6# pcl_test


    分两次托拽也行 主要处理的这个数据太乱 ,改变名称容易忘记是哪类数据。
保存的C文件,直接用A文件名加后缀导出。
谢谢
作者: pcl_test    时间: 2015-9-18 12:28

回复 7# shimuren
先拖拽A文件到批处理文件图标,再按提示操作
  1. @echo off
  2. echo;A文件%~1
  3. set /p b=拖入B文件并按回车键
  4. findstr /g:"%b%" "%~1">"结果_%~n1.txt"
  5. ping /n 2 0 >nul
复制代码

作者: shimuren    时间: 2015-9-18 13:45

回复 8# pcl_test

我修改成分两步拖入,但导出文件加后缀怎么实现呢?
  1. @echo off
  2. set /p a=拖入主文件文件并按回车键:
  3. set /p b=拖入对比文件文件并按回车键:
  4. findstr /g:"%b%" "%a%">"%a%.txt"
  5. ping /n 2 0 >nul
复制代码

作者: flyinnet9    时间: 2015-9-18 13:50

  1. @echo off
  2. set /p a=拖入主文件文件并按回车键:
  3. set /p b=拖入对比文件文件并按回车键:
  4. for /f "delims=" %%i in ("%a%") do set p=%%~ni
  5. findstr /g:"%b%" "%a%">"result_%p%.txt"
  6. ping /n 2 0 >nul
复制代码
回复 9# shimuren
作者: pcl_test    时间: 2015-9-18 13:50

回复 9# shimuren

8楼有何不妥?
作者: shimuren    时间: 2015-9-18 14:00

回复 11# pcl_test


    没  只是操作习惯问题,这阵子记得要先拖入a到图标上是第一步,过阵子就不记得了
改了下,思维就会按照提示去操作

谢谢大哥了




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