Win7系统下递归搜索指定文件并生成去重路径的列表文件需求
在Windows 7下生成Program Files目录及子目录的.exe文件清单
刚好之前处理过类似的需求,给你两种方案,都是用Windows原生工具实现的,不用额外安装软件:
基础方案:仅列出所有.exe文件的完整路径
如果只需要把所有.exe文件的完整路径列出来,直接打开命令提示符(CMD),运行下面的命令就行:
dir "C:\Program Files" /s /b /a-d *.exe > "C:\exe_list.txt"
参数说明:
/s:递归遍历目标目录的所有子目录/b:输出简洁格式,只显示文件的完整路径,没有多余的日期、大小等信息/a-d:只筛选文件,排除目录本身*.exe:只匹配.exe格式的可执行文件> "C:\exe_list.txt":把命令的输出结果写入到C盘根目录的exe_list.txt文件里,你可以改成自己想要的保存路径和文件名。
要是你的Windows 7是64位系统,别忘了同时遍历Program Files (x86)目录(32位程序默认安装在这里),把命令改成:
dir "C:\Program Files" "C:\Program Files (x86)" /s /b /a-d *.exe > "C:\exe_list.txt"
进阶方案:按目录分组,避免重复输出目录路径
如果想要同一目录下的多个.exe文件只显示一次目录路径,然后列出该目录下的所有exe,就需要写个简单的批处理脚本:
- 新建一个文本文件,把下面的代码粘贴进去
- 把文件后缀名从
.txt改成.bat(比如命名为ExeGroupList.bat)
@echo off setlocal enabledelayedexpansion set "outputFile=C:\exe_grouped_list.txt" :: 先清空输出文件 echo. > "%outputFile%" :: 遍历Program Files目录 for /r "C:\Program Files" %%f in (*.exe) do ( if not "!currentDir!"=="%%~dpf" ( set "currentDir=%%~dpf" echo !currentDir! >> "%outputFile%" ) echo - %%~nxf >> "%outputFile%" ) :: 64位系统额外遍历Program Files (x86) if exist "C:\Program Files (x86)" ( for /r "C:\Program Files (x86)" %%f in (*.exe) do ( if not "!currentDir!"=="%%~dpf" ( set "currentDir=%%~dpf" echo !currentDir! >> "%outputFile%" ) echo - %%~nxf >> "%outputFile%" ) ) echo 清单生成完成!文件路径:%outputFile% pause
脚本的逻辑很简单:
- 递归遍历目标目录下的所有.exe文件
- 每遇到一个新的目录,先输出目录路径
- 然后把该目录下的所有.exe文件名按列表形式输出,这样同一目录的路径只会出现一次
运行这个批处理后,生成的文件格式大概是这样:
C:\Program Files\Internet Explorer\
- iexplore.exe
- ieproxy.exe
C:\Program Files\Microsoft Office\Office14\- WINWORD.EXE
- EXCEL.EXE
内容的提问来源于stack exchange,提问作者Quantum Scintilla
相关产品推荐
相关产品推荐

