Board logo

标题: [文件操作] 如何用tree /f命令查找指定类型的文件并用目录树显示? [打印本页]

作者: ny350101    时间: 2011-3-11 23:32     标题: 如何用tree /f命令查找指定类型的文件并用目录树显示?

  1. Tree d: /F >Filelist.txt
复制代码

此代码可以列举D盘里的所有文件并以目录树的形式列举出来。现在的问题是如何让它能够列举指定类型(如DOC)的文件?
作者: wc726842270    时间: 2011-3-12 09:19

这样的话文件夹的结构还会有么?层次早就乱了吧。
如果仅是查找D盘下的DOC文件方法还是有很多的
wmic datafile where "drive='d:' and extension='doc'" list
作者: CrLf    时间: 2011-3-12 10:33

tree /f|findstr /rc:"├" /c:"└" /c:"\.bat">filelist.txt
作者: ny350101    时间: 2011-3-12 22:27

3楼的好用,符合要求。谢谢
请教一下,如果想改变分区和文件格式,如何修改呢?

[ 本帖最后由 ny350101 于 2011-3-12 22:49 编辑 ]
作者: CrLf    时间: 2011-3-12 23:11

  1. tree d: /f|findstr /rc:"├" /c:"└" /c:"\.txt$">filelist.txt
  2. ::搜索d盘txt文件
  3. tree e: /f|findstr /rc:"├" /c:"└" /c:"\.mp3$">filelist.txt
  4. ::搜索e盘mp3文件
复制代码

作者: ny350101    时间: 2011-3-12 23:31

zm900612兄,你的第一个批处理很好,查询结果是bat的单列出来,同时也显示文件夹名称。可后两个的效果就不如第一个了。能否也能有第一个的效果呢?
作者: CrLf    时间: 2011-3-13 12:40

后两个没问题呀,倒是第一个有点不严谨,可能误判。
能否举例对比
作者: ny350101    时间: 2011-3-13 15:25

第一个代码,我将它放在桌面,查找出来的比较好,原因是有欲查找的文件类型(如bat)都显示出来了,有些文件夹里不含该类型的文件,仅仅显示文件夹的名称,这样我个人认为很好。后来的代码,我将它修改为
  1. tree d: /f|findstr /rc:"├" /c:"└" /c:"\.doc$">filelist.txt
复制代码
意思是查找d盘里的DOC文件,放置在D盘根目录下,结果显示如图2。桌面里的文件还符合要求,别的就不行了(如图的上部分),显示了全部文件夹的全部内容,不是很直观。
作者: CrLf    时间: 2011-3-13 15:41

本来就是输出所有文件夹名和所有以.doc结尾的文件啊
如果非要tree,还要排除不含doc文件的文件夹名,那可能要倒序读取文件,再处理文件,效率肯定非常慢
作者: CrLf    时间: 2011-3-13 17:15

tree命令查找H盘txt文件,并排除不含txt的文件夹:
  1. @echo off&setlocal enabledelayedexpansion
  2. tree h: /f|findstr /rc:"├" /c:"└" /c:"\.txt$">treelist.txt
  3. cd.>空.tmp
  4. set n=1
  5. (for /f "tokens=2 delims=:" %%a in ('fc /n treelist.txt 空.tmp^|find ": "^|sort /r') do (
  6.    set tmp=%%a
  7.    if !tmp:~-4! neq .txt (set /a n+=1) else set n=0
  8.    if !n! leq 1 echo %%a
  9. ))>tmp.txt
  10. (for /f "tokens=2 delims=:" %%a in ('fc /n tmp.txt 空.tmp^|find ": "^|sort /r') do echo %%a)>treelist.txt
  11. pause
复制代码
效率很低,其实这样大肆修改还不如dir后自己diy目录树




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