如何将自定义文件整理BAT脚本添加到Shift+右键上下文菜单
如何将自定义文件整理BAT脚本添加到Shift+右键上下文菜单
兄弟,我看你已经有修改上下文菜单的经验了,那这个需求对你来说其实不难!核心是把你的BAT脚本改成支持外部传入目标文件夹路径,再通过注册表把菜单挂到两个场景(文件夹空白处、文件夹本身)的Shift+右键菜单里,还能让它显示在顶部。我给你一步步说清楚:
第一步:优化你的BAT脚本(不用再复制删除啦)
原来的脚本必须放在目标文件夹里,现在我们改成接收路径参数,这样固定存一个地方就行。把下面的代码保存成OrganizeFiles.bat,比如放到C:\Tools\目录下(你也可以选其他固定路径,记好就行):
@echo off :: 接收传入的目标文件夹路径,没传的话用当前目录 set "target_dir=%~1" if not defined target_dir set "target_dir=%cd%" :: 进入目标文件夹执行操作 pushd "%target_dir%" for %%i in (*) do ( :: 跳过脚本本身(如果脚本在当前目录的话),同时跳过其他BAT文件(可选) if /i not "%%~ni" == "organize" if not "%%~xi" == ".bat" ( :: 创建文件夹(已存在就忽略错误),然后移动文件 md "%%~ni" 2>nul && move "%%~i" "%%~ni" ) ) popd
第二步:修改注册表添加Shift+右键菜单
我们需要在两个注册表路径下添加条目,分别对应「文件夹空白处Shift+右键」和「右键点击文件夹本身Shift+右键」的场景。
场景1:在文件夹空白处Shift+右键显示菜单
- 按
Win+R输入regedit打开注册表编辑器 - 导航到路径:
HKEY_CLASSES_ROOT\Directory\Background\shell - 右键点击
shell→ 新建 → 项,命名为OrganizeFiles(内部标识,随便取但要唯一) - 选中新建的
OrganizeFiles项,双击右侧的(默认),把数值数据改成Organize Files(这是菜单上显示的文字) - 右键右侧空白处 → 新建 → 字符串值,命名为
Extended,值留空(这个参数让菜单只在Shift+右键时显示) - 再新建一个字符串值,命名为
Position,值设为Top(让菜单显示在最顶部) - 右键
OrganizeFiles→ 新建 → 项,命名为command - 选中
command项,双击右侧(默认),把数值数据改成:"C:\Tools\OrganizeFiles.bat" "%V"(注意把路径换成你实际保存BAT的路径,%V会自动传递当前文件夹的路径)
场景2:右键点击文件夹本身(Shift+右键)显示菜单
- 导航到路径:
HKEY_CLASSES_ROOT\Directory\shell - 重复场景1的步骤3-8:新建
OrganizeFiles项,设置显示文字、Extended、Position,然后在command项里填同样的BAT路径+%V参数
最后测试&注意事项
- 改完注册表不用重启,直接Shift+右键试试:不管是在文件夹空白处,还是右键点击文件夹本身,都能看到顶部的「Organize Files」菜单了
- 一定要确保BAT文件的路径写对,不然菜单点了没反应
- 修改注册表前最好右键对应的项,选择「导出」备份一下,万一改坏了可以恢复
- 脚本里的
if not "%%~xi" == ".bat"是可选的,如果你想处理BAT文件,删掉这部分就行
备注:内容来源于stack exchange,提问作者Manson Casey
相关产品推荐
相关产品推荐

