Featured image of post Windows 右键菜单

Windows 右键菜单

创建属于自己的右键菜单吧 ~

Windows 多级右键菜单基础

修改的键与项

Win10鼠标右键菜单管理分为三种情形:右键文件夹、文件以及右键空白区域

  • 右键空白区域(分为桌面空白区域和其他文件夹下空白区域)
  • 右键文件夹
  • 右键文件(分为所有文件和某类型文件两种)

image-20240914180800214

绝大部分情况只需要关系HKEY_CLASSES_ROOT即可

项:

SubCommands:如果某键需要设置为拥有子菜单,那么需要SubCommands,如样例图2

MUIVerb:显示的字符串

键:

shell:自定义的键需要在shell键下

command:绑定exe,并对其传参

关于传参

1
2
3
4
5
6
7
8
%0  //选中的单个文件的路径
%1  //选中的单个文件的路径
%2  //选中的单个文件的所在文件夹路径
%*  //选中的所有文件的所有文件路径,空格分隔
%V  //选中的若为快捷方式,则为目标路径,否则同%1
%n  //选中的文件名(无扩展名)
%x  //选中的文件扩展名
%W  //工作目录

%0%1在对多个文件夹和单个文件夹选中右键时,表现均一致

笔者环境为Win11

command设置为cmd.exe /c 1.bat %0时,

有趣的是,选中多个文件夹右键点击时,传参是分别传递的,例如选中了文件夹a,b两个,会调用两次command里的内容,即执行两次command,分别为

cmd.exe /c 1.bat a

cmd.exe /c 1.bat b

%*也是一样

示例

样例:

image-20240914181852906

image-20240914182035881

image-20240914182046217

image-20240914182101568

image-20240914182135215

效果:

image-20240914182009341

点击后会调用指定的vbs文件,传参是 deletexxxx%0

vbs脚本内容如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
strpass = ""
For each i in WScript.Arguments
    strpass = strpass & " " & i
Next
' msgbox strpass

Set WshShell = CreateObject("WScript.Shell")
strPythonScript = "D:\Users\lidm11\Code\rightMenu\fenfa.py"
strCommand = "python.exe " & strPythonScript & " " & strpass
' msgbox strCommand
WshShell.Run strCommand, 0, true

第一段拼接获得的参数,第二段传递给python脚本静默执行

脚本内容就根据传参灵活自定义了

存档,脱敏的导出文件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\Lidaming.tool]
"MUIVerb"="tools"
"SubCommands"=""

[HKEY_CLASSES_ROOT\Directory\shell\Lidaming.tool\shell]

[HKEY_CLASSES_ROOT\Directory\shell\Lidaming.tool\shell\Lidaming.deleteEmptyDir]
"MUIVerb"="递归清除空子文件夹"

[HKEY_CLASSES_ROOT\Directory\shell\Lidaming.tool\shell\Lidaming.deleteEmptyDir\command]
@="wscript.exe D:\\fenfa.vbs deleteEmptyDir %0"

[HKEY_CLASSES_ROOT\Directory\shell\Lidaming.tool\shell\Lidaming.deleteEmptyFile]
"MUIVerb"="递归清除空文件"

[HKEY_CLASSES_ROOT\Directory\shell\Lidaming.tool\shell\Lidaming.deleteEmptyFile\command]
@="wscript.exe D:\\fenfa.vbs deleteEmptyFile %0"
Dan❤Anan
Built with Hugo
主题 StackJimmy 设计