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

[文本处理] 批处理如何批量查找文本内容中包含指定字符串的txt文件?

本帖最后由 pcl_test 于 2017-4-12 19:22 编辑

好几千个txt文本,怎么批量筛选txt内容中包含“姓名”的txt,是内容包含,不是文件名包含哦。
求大神指导!!!!

for /r 遍历文件 find寻找,找到就把文件路径输出

TOP

大神,我是小白,不太明白,有代码吗?

TOP

回复 2# mms0536


   
大神,我是小白,不太明白,有代码吗?

TOP

回复 4# nihaoareyou


    那你把你的一个几个txt压缩上传看看,重要内容自己替换掉

TOP

回复 5# mms0536


    比如这三个文件中,我想筛选出包含“姓名”的那个txt。
实际上,我有上万个txt。

TOP

回复 5# mms0536

    比如这三个文件中,我想筛选出包含“姓名”的那个txt。
实际上,我有很多个txt。

TOP

本帖最后由 mms0536 于 2015-1-11 14:22 编辑

回复 7# nihaoareyou
路径改成你的txt所在的目录
现在是把包含姓名的txt文件路径放到了d:\include_name.txt ,你要是向移动文件或者复制文件,自己修改下
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. for /r "路径" %%a in (*.txt) do (
  4. find "姓名" %%a
  5. if "!errorlevel!"=="0" echo %%a >>d:\include_name.txt
  6. )
  7. setlocal DiskableDelayedExpansion
  8. echo 已完成,路径保存在d:\include_name.txt
  9. pause >nul
复制代码

TOP

回复 8# mms0536


    感谢大神! 能直接将包含“姓名”的txt文件输出到指定文件夹内吗?要不然文件太多,我还需要一个一个查找复制出来,太费时了。

TOP

  1. @echo off
  2. if not exist d:\include_name mkdir d:\include_name
  3. setlocal EnableDelayedExpansion
  4. for /r "路径" %%a in (*.txt) do (
  5. find "姓名" %%a
  6. if "!errorlevel!"=="0" copy %%a d:\include_name\*.* /y
  7. )
  8. setlocal DiskableDelayedExpansion
  9. echo 已完成,保存在d:\include_name\
  10. pause >nul
复制代码
回复 9# nihaoareyou

TOP

建议直接用 findstr 找出所有包含“姓名”的文件,而不是每个文件都启动一次 find 或 findstr。
  1. findstr /m /c:"姓名" *.txt
复制代码

TOP

回复 10# mms0536


    太感谢您了,大神!!!狂点赞!!!
    愿您一切顺利,心想事成。

TOP

回复 11# tmplinshi


    谢谢,又学了一招...
findstr用的很少
目前水平就是堆叠命令,还没深入研究每个命令...
感谢指点

TOP

回复 11# tmplinshi


    请问这个怎么具体操作呢?

TOP

回复 12# nihaoareyou


    你楼上才是大神,经过指点,优化后如下,你试试吧
  1. @echo off
  2. for /f "delims=""" %%a in ('findstr /m /c:"姓名" "txt所在路径\*.txt"') do (
  3. copy %%a d:\include_name\*.*
  4. )
  5. echo 执行完毕
  6. pause >nul
复制代码

TOP

返回列表