需求背景
在 Windows 资源管理器中,希望右键点击某个文件夹的空白处,选择菜单项后自动生成一个 文件列表.txt,里面列出该文件夹下的所有文件和一级子文件夹的名称(不深入子文件夹,也不把列表文件本身统计进去)。
解决方案(批处理 + 注册表)( 由Deepseek帮忙生成)
生成文件列表.zip
(888 Bytes, 下载次数: 3)
第一步:准备批处理脚本
创建一个文本文件,命名为 生成文件列表.bat,内容如下:
@echo off
chcp 65001 >nul
set "output=文件列表.txt"
set "tempfile=%temp%\_tmp_filelist_%random%.txt"
:: 如果输出文件已存在,先删除(避免被列出来)
if exist "%output%" del "%output%"
:: 列出当前目录下所有文件和文件夹(不递归子文件夹),输出到临时文件
dir /b > "%tempfile%"
:: 将临时文件内容复制到最终文件,并删除临时文件
copy "%tempfile%" "%output%" >nul
del "%tempfile%"
:: 静默退出(不暂停)
exit /b
将该文件保存到 C 盘根目录(C:\生成文件列表.bat)。
如果你不希望看到这个文件,可以右键该文件 → 属性 → 勾选「隐藏」。
第二步:添加右键菜单(注册表)
创建一个文本文件,命名为 AddFileListContextMenu.reg,内容如下:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\GenerateFileList]
@="生成文件列表"
[HKEY_CLASSES_ROOT\Directory\Background\shell\GenerateFileList\command]
@="cmd /c \"C:\\生成文件列表.bat\""
注意:
- 路径
C:\\生成文件列表.bat 中的反斜杠必须写成双反斜杠。
- 如果你把
.bat 放在了其他位置,请修改对应的路径。
双击运行 AddFileListContextMenu.reg,弹出确认提示时选择「是」,即可完成导入。
使用效果
- 在任意文件夹的空白处右键 → 点击「生成文件列表」。
- 会在该文件夹下生成
文件列表.txt,里面包含该文件夹下的所有文件名称和一级子文件夹名称。
- 不会递归进入子文件夹,不会包含
文件列表.txt 自身。
- CMD 窗口会一闪而过(若想完全无窗口,可改用 PowerShell 静默启动,见下方扩展)。
可能遇到的问题与解决方法
| 问题 |
原因 |
解决方法 |
| 右键菜单没有出现 |
注册表未导入成功 |
以管理员身份运行 .reg 文件,或手动检查 HKEY_CLASSES_ROOT\Directory\Background\shell\GenerateFileList 是否存在 |
| 点击后没反应 |
脚本路径错误 |
确认 C:\生成文件列表.bat 真实存在,且注册表中的路径与之完全一致(注意反斜杠) |
| 生成的文件列表乱码 |
文件夹名含中文或特殊字符 |
脚本中已包含 chcp 65001(UTF-8),如果仍有乱码,可将 chcp 65001 改为 chcp 936(GBK) |
卸载方法
如果不再需要该功能,以管理员身份运行 regedit,删除以下项即可:
HKEY_CLASSES_ROOT\Directory\Background\shell\GenerateFileList
总结
一个简单的批处理 + 一行注册表命令,即可为 Windows 资源管理器添加实用的右键菜单功能。无需安装任何第三方软件,轻量、快速、完全可控。
欢迎测试反馈!
|