标题: [文本处理] 【已解决】文本的批量循环匹配并写入到新文件的批处理问题 [打印本页]
作者: 304802301 时间: 2023-1-29 19:25 标题: 【已解决】文本的批量循环匹配并写入到新文件的批处理问题
各位论坛的大佬新年好!
一、源文件夹里面有很多文件夹,有些是多层路径,有很多txt文件。比如某个文件夹下面的某个txt文件的某一行的数据是90989abc123123 *\、,.u1kj2-|k12k
二、我这里有个“清单.txt”,比如第一行数据是abc。
三、我的目的:
1>拿“清单.txt”的第一行“【abc】去源文件夹里的每一层文件夹里的每一个文件夹里的每一个txt文件的每一行去搜索,只要某一行的数据是包含了【abc】的就算匹配到了,上述例子中【90989abc123123 *\、,.u1kj2-|k12k】是包含【abc】的,就算是匹配到了。
2>匹配到了之后把【abc】和【90989abc123123 *\、,.u1kj2-|k12k】都输出到一个新文件"清单匹配结果.txt"中的第一行。
3>如果源文件中的所有txt都没搜索到,那就输出“abc+未搜索到”。然后拿“清单.txt”的第二行数据继续去搜索。
4>以此类推,“清单.txt”里的所有数据搜索完即可。
四、注意:需要循环匹配,“清单.txt”的第一行去源文件夹里面所有的txt循坏搜索;“清单.txt”的第一行搜索完成之后循环拿第二行数据去搜索。
实例上传了百度网盘,链接:https://pan.baidu.com/s/1ZZwUCAW1_J_sWppxcp02dg 提取码:jc2b
作者: 77七 时间: 2023-1-29 20:30
本帖最后由 77七 于 2023-1-29 21:22 编辑
- @echo off
- rem 先设置路径,需要引号,如 set 清单="D:\清单.txt"
- set 源文件夹=
- set 清单=
- cd /d %源文件夹%
- for /f "delims=" %%a in ('type %清单%') do (
- set n=
- for /f "delims=" %%b in ('dir /b /s /a-d *.txt') do (
- for /f "delims=" %%c in ('type "%%~fb" ^| find "%%a"') do (
- echo %%a %%c %%~fb
- set n=1
- )
- )
- if not defined n (
- echo %%a 未搜索到
- )
- )>>"%~dp0"结果.txt
- pause
复制代码
试试能行吗
作者: 304802301 时间: 2023-1-29 21:16
回复 2# 77七
大佬,感谢!可以使用,不过能否再加一个要求,就是匹配到的话,输出内容的后面再加一个内容,就是匹配到的内容所在路径及他的文件名
作者: 77七 时间: 2023-1-29 21:23
回复 3# 304802301
已修改
作者: 304802301 时间: 2023-1-29 21:27
回复 4# 77七
感谢大佬,新年愉快
作者: 77七 时间: 2023-1-29 21:34
回复 5# 304802301
不用客气,新年快乐!
作者: terse 时间: 2023-1-30 15:59
这样效率高点- @echo off
- set "源文件夹=%~dp0源文件夹"
- set "清单=清单.txt"
- (for /f "delims=" %%i in (清单.txt) do (
- (for /f "tokens=1,2*delims=:" %%a in ('findstr /is "%%i" "%源文件夹%\*.txt"') do (
- echo %%i %%c %%a:%%b
- ))||echo %%i 未搜索到
- ))>结果.txt
- pause
复制代码
作者: 304802301 时间: 2023-2-2 14:59
这样效率高点
terse 发表于 2023-1-30 15:59
感谢感谢
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |