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

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

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

此代码可以列举D盘里的所有文件并以目录树的形式列举出来。现在的问题是如何让它能够列举指定类型(如DOC)的文件?

这样的话文件夹的结构还会有么?层次早就乱了吧。
如果仅是查找D盘下的DOC文件方法还是有很多的
wmic datafile where "drive='d:' and extension='doc'" list
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

tree /f|findstr /rc:"├" /c:"└" /c:"\.bat">filelist.txt

TOP

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

[ 本帖最后由 ny350101 于 2011-3-12 22:49 编辑 ]

TOP

  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文件
复制代码

TOP

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

TOP

后两个没问题呀,倒是第一个有点不严谨,可能误判。
能否举例对比

TOP

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

TOP

本来就是输出所有文件夹名和所有以.doc结尾的文件啊
如果非要tree,还要排除不含doc文件的文件夹名,那可能要倒序读取文件,再处理文件,效率肯定非常慢

TOP

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目录树
1

评分人数

TOP

返回列表