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

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

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

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

回复 20# DAIC


    嗯嗯 "delims="就可以了,
copy 后面不写*.* 确实可以
%%a加双引号防止空格或汉字

受教了

谢谢指点

TOP

回复 16# mms0536


第三行的 """ 改成 " 就行了吧
第五行的 *.* 可以省略吧
第五行的 %%a 加上双引号比较好吧

TOP

  1. findstr /m "姓名" *.txt
复制代码

TOP

回复 16# mms0536


    “批量替换txt第一列和第三列”那个帖子也是我发的,您知道怎么操作吗?
     所有txt的列数都是固定且相同的。

TOP

回复 15# mms0536


    确实快了很多!领教了,都是大神!

TOP

本帖最后由 mms0536 于 2015-1-11 15:07 编辑

这个是启用了延时变量 然后能看出来在运行的
  1. @echo off&setlocal EnableDelayedExpansion
  2. set i=0
  3. for /f "delims=""" %%a in ('findstr /m /c:"姓名" "txt所在路径\*.txt"') do (
  4. set /a i+=1
  5. copy %%a d:\include_name\*.*
  6. cls
  7. echo 已复制 !i!个文件 .
  8. )
  9. setlocal DisableDelayedExpansion
  10. echo 执行完毕
  11. pause >nul
复制代码

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

回复 11# tmplinshi


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

TOP

回复 11# tmplinshi


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

TOP

回复 10# mms0536


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

TOP

建议直接用 findstr 找出所有包含“姓名”的文件,而不是每个文件都启动一次 find 或 findstr。
  1. findstr /m /c:"姓名" *.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

回复 8# mms0536


    感谢大神! 能直接将包含“姓名”的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

返回列表