标题: [文件操作] 如何用tree /f命令查找指定类型的文件并用目录树显示? [打印本页]
作者: ny350101 时间: 2011-3-11 23:32 标题: 如何用tree /f命令查找指定类型的文件并用目录树显示?
复制代码
此代码可以列举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
- tree d: /f|findstr /rc:"├" /c:"└" /c:"\.txt$">filelist.txt
- ::搜索d盘txt文件
- tree e: /f|findstr /rc:"├" /c:"└" /c:"\.mp3$">filelist.txt
- ::搜索e盘mp3文件
复制代码
作者: ny350101 时间: 2011-3-12 23:31
zm900612兄,你的第一个批处理很好,查询结果是bat的单列出来,同时也显示文件夹名称。可后两个的效果就不如第一个了。能否也能有第一个的效果呢?
作者: CrLf 时间: 2011-3-13 12:40
后两个没问题呀,倒是第一个有点不严谨,可能误判。
能否举例对比
作者: ny350101 时间: 2011-3-13 15:25
第一个代码,我将它放在桌面,查找出来的比较好,原因是有欲查找的文件类型(如bat)都显示出来了,有些文件夹里不含该类型的文件,仅仅显示文件夹的名称,这样我个人认为很好。后来的代码,我将它修改为- 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的文件夹:- @echo off&setlocal enabledelayedexpansion
- tree h: /f|findstr /rc:"├" /c:"└" /c:"\.txt$">treelist.txt
- cd.>空.tmp
- set n=1
- (for /f "tokens=2 delims=:" %%a in ('fc /n treelist.txt 空.tmp^|find ": "^|sort /r') do (
- set tmp=%%a
- if !tmp:~-4! neq .txt (set /a n+=1) else set n=0
- if !n! leq 1 echo %%a
- ))>tmp.txt
- (for /f "tokens=2 delims=:" %%a in ('fc /n tmp.txt 空.tmp^|find ": "^|sort /r') do echo %%a)>treelist.txt
- pause
复制代码
效率很低,其实这样大肆修改还不如dir后自己diy目录树
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |