Board logo

标题: [文本处理] [已解决]批处理如何查找当前目录及子目录下文本内容中包含指定字符串的文本? [打印本页]

作者: super1129    时间: 2011-11-17 18:23     标题: [已解决]批处理如何查找当前目录及子目录下文本内容中包含指定字符串的文本?

本帖最后由 pcl_test 于 2016-9-25 20:56 编辑

比如在D:\abc 以及abc下还有很多子目录,每个目录下有很多txt文件,
请问如何找到所有这些文件内容中(不是文件标题)包含“专业”这个字符串的所有文件名呢?最好是输出到一个文件中。
谢谢大家!

作者: 冷玉公子    时间: 2011-11-17 19:31

首先你所需要的不需要批处理,命令就可以解决
方法1:
  1. Dir /S *专业*
复制代码
Dir /S 搜索命令 如果要输出要一个文件加上重定向符号即可
  1. Dir /S *专业* >> File.txt
复制代码
方法2:
  1. For /R %A In (专业) Do @Echo %A
复制代码
For /R 递归搜索命令,会连目录中包含《专业》的目录也输出来。输出到文件是这样写
  1. For /R %A In (专业) Do @Echo %A >> File.txt
复制代码

作者: super1129    时间: 2011-11-18 08:24

首先你所需要的不需要批处理,命令就可以解决
方法1:Dir /S 搜索命令 如果要输出要一个文件加上重定向符号 ...
冷玉公子 发表于 2011-11-17 19:31



    谢谢回复

但是我的目的不是搜索文件标题,而是搜索文件内容,如果内容中含有指定的字符串,则输出文件名。
再麻烦你一下,谢谢
作者: super1129    时间: 2011-11-19 21:23

我的目的不是搜索文件标题,而是搜索文件内容,如果内容中含有指定的字符串,则输出文件名。
再麻烦大家一下,谢谢
作者: CrLf    时间: 2011-11-19 21:30

  1. findstr /lms 专业 *.txt
复制代码

作者: Hello123World    时间: 2011-11-21 20:23

本帖最后由 Hello123World 于 2011-11-21 20:27 编辑
  1. @echo off
  2. (for /f "delims=" %%i in ('Dir /s /b /a-d d:\abc\*.txt') do Findstr /m "专业" "%%i")>包含专业.txt
  3. start 包含专业.txt
  4. pause
复制代码
还是crlf高明,/l可以省了。
作者: 279491611    时间: 2015-9-18 11:10

能不能改进一下,把包含指定特殊字符的文件移动到当前目录新建一个特殊字符的文件夹里。比如,在当前目录新建一个“专业”的文件夹,把当前目录及子目录下 含“专业”的所有文件都移动到这个“专业”的文件夹里。相当于当前目录下文件归档之类的意思吧。
作者: flyinnet9    时间: 2015-9-18 11:23

本帖最后由 flyinnet9 于 2015-9-18 14:40 编辑
  1. @echo off
  2. md 专业
  3. for /f "delims=" %%a in ('dir /s /b /a-d ^|findstr "专业"') do move /y "%%a" .\专业\
复制代码

作者: 279491611    时间: 2015-9-18 14:30

本帖最后由 279491611 于 2015-9-18 14:34 编辑

回复 8# flyinnet9

我的是  文件名  中含有"专业“的文件,都移动到"专业"的目录下面,不好意思,我没表述清楚. 比如说: 结构专业.doc  建筑专业.dwg  电气专业.xls .机电专业二次修改.pdf     .................. 等等文件 都移动到 当前 目录 ”专业“的文件夹里
作者: flyinnet9    时间: 2015-9-18 14:41

回复 9# 279491611


    已改
作者: 279491611    时间: 2015-9-18 14:46

回复 8# flyinnet9


    谢谢得偿所愿.
作者: flyinnet9    时间: 2015-9-18 15:15

本帖最后由 flyinnet9 于 2015-9-18 15:41 编辑

回复 11# 279491611

上面的有点问题,用这个吧,效率不高
  1. @echo off
  2. md 专业
  3. for /f "delims=" %%a in ('dir /s /b /a-d') do for /f "delims=" %%b in ('echo "%%~na" ^|findstr "专业"') do move /y "%%a" .\专业\
复制代码
这样效率高点??
  1. @echo off
  2. md 专业 2>nul
  3. for /f "delims=" %%a in ('dir /s /b /a-d') do echo %%~na |findstr "专业" >nul && move /y "%%a" .\专业\
复制代码

作者: 279491611    时间: 2015-9-18 16:42

回复 12# flyinnet9


    谢谢你在精益求精中提升.
作者: pcl_test    时间: 2015-9-18 21:45

回复 12# flyinnet9
  1. dir /s /b /a-d|findstr /e "\\[^\\]*专业[^\\]*"
复制代码

作者: zhangfei441441    时间: 2015-12-3 19:10

回复 10# flyinnet9


    那么请问,如何移动文件中含有固定字符串的文件到固定的文件夹中?比如我有好多个txt文件,有些txt文件中含有“AA BB”这个字符串,我想把这些文件移动到AA这个文件夹中。谢谢!




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