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
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
如下图所示:只有选定指定类型文件,右键才会显示相关菜单项。