批处理之添加鼠标右键菜单

1. 准备知识

1.1. ASSOC

显示或修改文件扩展名关联

ASSOC [.ext[=[fileType]]]

  • ext 指定跟文件类型关联的文件扩展名
  • fileType 指定跟文件扩展名关联的文件类型

键入 ASSOC 而不带参数,显示当前文件关联。如果只用文件扩展名调用 ASSOC,则显示那个文件扩展名的当前文件关联。如果不为文件类型指定任何参数,命令会删除文件扩展名的关联。

1.2. FTYPE

显示或修改用在文件扩展名关联中的文件类型

FTYPE [fileType[=[openCommandString]]]

  • fileType 指定要检查或改变的文件类型
  • openCommandString 指定调用这类文件时要使用的开放式命令。

键入 FTYPE 而不带参数来显示当前有定义的开放式命令字符串的文件类型。FTYPE 仅用一个文件类型启用时,它显示那个文件类型目前的开放式命令字符串。如果不为开放式命令字符串指定,FTYPE 命令将删除那个文件类型的开放式命令字符串。在一个开放式命令字符串之内,命令字符串 %0 或 %1 被通过关联调用的文件名所代替。%* 得到所有的参数,%2 得到第一个参数,
%3 得到第二个,等等。%~n 得到其余所有以 nth 参数打头的参数;n 可以是从 2 到 9 的数字。例如:

ASSOC .pl=PerlScript
FTYPE PerlScript=perl.exe %1 %*

允许你启用以下 Perl 脚本:

script.pl 1 2 3

1.3. REG

1.3.1. REG ADD

REG ADD KeyName [/v ValueName | /ve] [/t Type] [/s Separator] [/d Data] [/f] [/reg:32 | /reg:64]

  • KeyName [\Machine]FullKey
    Machine 远程机器名 - 忽略默认到当前机器。远程机器上只有 HKLM 和 HKU 可用。
    FullKey ROOTKEY\SubKey
    ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]
    SubKey 所选 ROOTKEY 下注册表项的完整名称。

  • /v 所选项之下要添加的值名称。

  • /ve 为注册表项添加空白值名称(默认)。

  • /t RegKey 数据类型
    [ REG_SZ | REG_MULTI_SZ | REG_EXPAND_SZ |
    REG_DWORD | REG_QWORD | REG_BINARY | REG_NONE ]
    如果忽略,则采用 REG_SZ。

  • /s 指定一个在 REG_MULTI_SZ 数据字符串中用作分隔符的字符如果忽略,则将 “\0” 用作分隔符。

  • /d 要分配给添加的注册表 ValueName 的数据。

  • /f 不用提示就强行覆盖现有注册表项。

  • /reg:32 指定应该使用 32 位注册表视图访问的注册表项。

  • /reg:64 指定应该使用 64 位注册表视图访问的注册表项。

例如:

  • REG ADD \ABC\HKLM\Software\MyCo
    添加远程机器 ABC 上的一个注册表项 HKLM\Software\MyCo

  • REG ADD HKLM\Software\MyCo /v Data /t REG_BINARY /d fe340ead
    添加一个值(名称: Data,类型: REG_BINARY,数据: fe340ead)

  • REG ADD HKLM\Software\MyCo /v MRU /t REG_MULTI_SZ /d fax\0mail
    添加一个值(名称: MRU,类型: REG_MULTI_SZ,数据: fax\0mail\0\0)

  • REG ADD HKLM\Software\MyCo /v Path /t REG_EXPAND_SZ /d %systemroot%
    添加一个值(名称: Path,类型: REG_EXPAND_SZ,数据: %systemroot%)
    注意: 在扩充字符串中使用插入符号 ( ^ )

1.3.2. REG DELETE

REG DELETE KeyName [/v ValueName | /ve | /va] [/f] [/reg:32 | /reg:64]

  • KeyName [\Machine]FullKey
    远程机器名 - 如果省略,默认情况下将使用当前机器。
    远程机器上只有 HKLM 和 HKU 可用。
    FullKey ROOTKEY\SubKey
    ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]
    SubKey 所选 ROOTKEY 下面的注册表项的全名。

  • ValueName 所选项下面的要删除的值名称。
    如果省略,则删除该项下面的所有子项和值。

  • /ve 删除空值名称的值(默认)。

  • /va 删除该项下面的所有值。

  • /f 不用提示,强制删除。

  • /reg:32 指定应使用 32 位注册表视图访问
    注册表项。

  • /reg:64 指定应使用 64 位注册表视图访问
    注册表项。

示例:

  • REG DELETE HKLM\Software\MyCo\MyApp\Timeout
    删除注册表项 Timeout 及其所有子项和值

  • REG DELETE \ZODIAC\HKLM\Software\MyCo /v MTU
    删除 ZODIAC 上的 MyCo 下面的注册表值 MTU

2. 创建右键菜单项

2.1. 创建文件夹右键菜单项

@Echo off
rem HKEY_LOCAL_MACHINE可以简写为HKLM,Test为右键菜单标识,TestMenu为菜单选项名
rem REG ADD HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\Test /T REG_SZ /d "TestMenu" /f
REG ADD HKLM\SOFTWARE\Classes\Folder\shell\Test /T reg_sz /d "TestMenu" /f

rem icon值表明是菜单项图标,/d后面的exe提供图标
REG ADD HKLM\SOFTWARE\Classes\Folder\shell\Test /V icon /T REG_SZ /d "C:\Microsoft VS Code\Code.exe" /f

rem Extended表示按住Shift键才能显示此菜单项
REG ADD HKLM\SOFTWARE\Classes\Folder\shell\Test /V Extended /T REG_SZ /f

rem Top表明菜单项显示在最前面,显示图1左
REG ADD HKLM\SOFTWARE\Classes\Folder\shell\Test /V Position /T REG_SZ /d "Top" /f
rem Bottom表明菜单项显示在最前面,显示图1右
rem REG ADD HKLM\SOFTWARE\Classes\Folder\shell\Test /V Position /T REG_SZ /d "Bottom" /f

rem SeparatorAfter表示在菜单项在分隔线后,显示图1
REG ADD HKLM\SOFTWARE\Classes\Folder\shell\Test /V SeparatorAfter /T REG_SZ /f

rem SeparatorAfter表示在菜单项在分隔线前,显示图1
REG ADD HKLM\SOFTWARE\Classes\Folder\shell\Test /V SeparatorBefore /T REG_SZ /f

rem 添加默认值为exe路径及%1(表示选中的文件夹路径),打开之后显示如图2
REG ADD HKLM\SOFTWARE\Classes\Folder\shell\Test\Command /T REG_SZ /d "C:\Microsoft VS Code\Code.exe %%1" /f

Pause>nul

图1
在这里插入图片描述

2.2. 创建目录右键菜单项

@Echo off
rem HKEY_LOCAL_MACHINE可以简写为HKLM,Test为右键菜单标识,TestMenu为菜单选项名
rem REG ADD HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\Test /T REG_SZ /d "TestMenu" /f
REG ADD HKLM\SOFTWARE\Classes\Directory\background\shell\Test /T reg_sz /d "TestMenu" /f

rem icon值表明是菜单项图标,/d后面的exe提供图标
REG ADD HKLM\SOFTWARE\Classes\Directory\background\shell\Test /V icon /T REG_SZ /d "C:\Microsoft VS Code\Code.exe" /f

rem Extended表示按住Shift键才能显示此菜单项
REG ADD HKLM\SOFTWARE\Classes\Directory\background\shell\Test /V Extended /T REG_SZ /f

rem Top表明菜单项显示在最前面,显示图1
REG ADD HKLM\SOFTWARE\Classes\Directory\background\shell\Test /V Position /T REG_SZ /d "Top" /f
rem Bottom表明菜单项显示在最前面,显示图1
REG ADD HKLM\SOFTWARE\Classes\Directory\background\shell\Test /V Position /T REG_SZ /d "Bottom" /f

rem SeparatorAfter表示在菜单项在分隔线后,显示图1
REG ADD HKLM\SOFTWARE\Classes\Directory\background\shell\Test /V SeparatorAfter /T REG_SZ /f

rem SeparatorAfter表示在菜单项在分隔线前,显示图1
REG ADD HKLM\SOFTWARE\Classes\Directory\background\shell\Test /V SeparatorBefore /T REG_SZ /f

rem 添加默认值为exe路径及%1(表示选中的文件夹路径),打开之后显示如图2
REG ADD HKLM\SOFTWARE\Classes\Directory\background\shell\Test\Command /T REG_SZ /d "C:\Microsoft VS Code\Code.exe %%v" /f

Pause>nul

2.3. 创建指定文件右键菜单项

2.3.1 创建基于所有文件的右键菜单项

@Echo off
rem *就表明适用于所有文件
REG ADD HKLM\Software\Classes\*\Shell\Test /t REG_SZ /d "TestFileMenu" /f 
REG ADD HKLM\Software\Classes\*\Shell\Test\Command /t REG_SZ /d "C:\Program Files (x86)\Notepad++\notepad++.exe" /f 
rem Extended表示按住Shift键才能显示此菜单项
REG ADD HKLM\Software\Classes\*\Shell\Test /V Extended /T REG_SZ /f

rem Top表明菜单项显示在最前面
REG ADD HKLM\Software\Classes\*\Shell\Test /V Position /T REG_SZ /d "Top" /f
rem Bottom表明菜单项显示在最前面
rem REG ADD HKLM\SOFTWARE\Classes\Folder\shell\Test /V Position /T REG_SZ /d "Bottom" /f

rem SeparatorAfter表示在菜单项在分隔线后
REG ADD HKLM\Software\Classes\*\Shell\Test /V SeparatorAfter /T REG_SZ /f

rem SeparatorAfter表示在菜单项在分隔线前
REG ADD HKLM\Software\Classes\*\Shell\Test /V SeparatorBefore /T REG_SZ /f
Pause>nul

2.3.2. 创建基于指定类型文件的右键菜单项

首先要关联文件类型,使用 ASSOC关联。

@Echo off

ASSOC .javatype=mytypeFile
REG ADD HKLM\SOFTWARE\Classes\SystemFileAssociations\.javatype\shell\Test /t REG_SZ /d "TestFileMenu" /f 
REG ADD HKLM\SOFTWARE\Classes\SystemFileAssociations\.javatype\shell\Test\Command /t REG_SZ /d "C:\Program Files (x86)\Notepad++\notepad++.exe %%1" /f 

rem icon值表明是菜单项图标,/d后面的exe提供图标
REG ADD HKLM\SOFTWARE\Classes\SystemFileAssociations\.javatype\shell\Test /V icon /T REG_SZ /d "C:\Microsoft VS Code\Code.exe" /f

rem Extended表示按住Shift键才能显示此菜单项
REG ADD HKLM\SOFTWARE\Classes\SystemFileAssociations\.javatype\shell\Test /V Extended /T REG_SZ /f

rem Top表明菜单项显示在最前面,显示图1左
REG ADD HKLM\SOFTWARE\Classes\SystemFileAssociations\.javatype\shell\Test /V Position /T REG_SZ /d "Top" /f
rem Bottom表明菜单项显示在最前面,显示图1右
rem REG ADD HKLM\SOFTWARE\Classes\Folder\shell\Test /V Position /T REG_SZ /d "Bottom" /f

rem SeparatorAfter表示在菜单项在分隔线后,显示图1
REG ADD HKLM\SOFTWARE\Classes\SystemFileAssociations\.javatype\shell\Test /V SeparatorAfter /T REG_SZ /f

rem SeparatorAfter表示在菜单项在分隔线前,显示图1
REG ADD HKLM\SOFTWARE\Classes\SystemFileAssociations\.javatype\shell\Test /V SeparatorBefore /T REG_SZ /f

Pause>nul

如下图所示:只有选定指定类型文件,右键才会显示相关菜单项。
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章