这段代码是如何工作的?

时间:2016-09-12 12:41:24

标签: windows contextmenu

@echo off
SET st3Path=C:\Program Files\Sublime Text 3\sublime_text.exe

rem add it for all file types
@reg add "HKEY_CLASSES_ROOT\*\shell\Open with Sublime Text 3"         /t REG_SZ /v "" /d "Open with Sublime Text 3"   /f
@reg add "HKEY_CLASSES_ROOT\*\shell\Open with Sublime Text 3"         /t REG_EXPAND_SZ /v "Icon" /d "%st3Path%,0" /f
@reg add "HKEY_CLASSES_ROOT\*\shell\Open with Sublime Text 3\command" /t REG_SZ /v "" /d "%st3Path% \"%%1\"" /f

rem add it for folders
@reg add "HKEY_CLASSES_ROOT\Folder\shell\Open with Sublime Text 3"         /t REG_SZ /v "" /d "Open with Sublime Text 3"   /f
@reg add "HKEY_CLASSES_ROOT\Folder\shell\Open with Sublime Text 3"         /t REG_EXPAND_SZ /v "Icon" /d "%st3Path%,0" /f
@reg add "HKEY_CLASSES_ROOT\Folder\shell\Open with Sublime Text 3\command" /t REG_SZ /v "" /d "%st3Path% \"%%1\"" /f
pause

1 个答案:

答案 0 :(得分:0)

它修改了Windows注册表,添加了对应于文件夹和文件类型上的shell交互(右键单击)的注册表项。它添加了一个菜单项来打开崇高文本中的项目。

运行后,您可以使用regedit检查注册表。

详细说明:

@echo off

@导致行在执行时不会回显到屏幕。 echo off对脚本的其余部分执行相同的操作。

SET st3Path=C:\Program Files\Sublime Text 3\sublime_text.exe

设置环境变量。

rem add it for all file types
@reg add "HKEY_CLASSES_ROOT\*\shell\Open with Sublime Text 3"         /t REG_SZ /v "" /d "Open with Sublime Text 3"   /f
@reg add "HKEY_CLASSES_ROOT\*\shell\Open with Sublime Text 3"         /t REG_EXPAND_SZ /v "Icon" /d "%st3Path%,0" /f
@reg add "HKEY_CLASSES_ROOT\*\shell\Open with Sublime Text 3\command" /t REG_SZ /v "" /d "%st3Path% \"%%1\"" /f

此块使用reg命令来更改注册表。虽然没有必要使用@修饰符,因为之前发布了echo off命令。

HKEY_CLASSES_ROOT\*\shell对应于所有文件类型的右键菜单选项。它添加了一个用Sublime Text打开的选项。三个注册表键对应相同的定义:第一行定义选项,第二行定义图标,第三行定义执行命令:此处\"%%1\"存储为"%1",最终被替换由资源管理器执行时所选文件的路径。

您可以在命令行上使用reg检查reg add /?语法。不同的选项指定密钥的数据类型(/t),密钥名称(/v),实际数据内容(/d),覆盖现有密钥(/f )。

文件扩展名关联的数据结构由Microsoft在此描述:https://msdn.microsoft.com/en-us/library/windows/desktop/ms724475(v=vs.85).aspx

rem add it for folders
@reg add "HKEY_CLASSES_ROOT\Folder\shell\Open with Sublime Text 3"         /t REG_SZ /v "" /d "Open with Sublime Text 3"   /f
@reg add "HKEY_CLASSES_ROOT\Folder\shell\Open with Sublime Text 3"         /t REG_EXPAND_SZ /v "Icon" /d "%st3Path%,0" /f
@reg add "HKEY_CLASSES_ROOT\Folder\shell\Open with Sublime Text 3\command" /t REG_SZ /v "" /d "%st3Path% \"%%1\"" /f
pause

这相当于文件夹。