这段代码是如何工作的

How Does this piece of code work

@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

它修改 Windows 注册表,添加与文件夹和文件类型上的 shell 交互(右键单击)相对应的注册表项。它添加了一个菜单项以在 sublime text 中打开项目。

在 运行 之后,您可以使用 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 add /? 检查 reg 语法。不同的选项指定键的数据类型(/t)、键名(/v)、实际数据内容(/d)、覆盖现有键(/f ).

文件扩展名关联的数据结构由微软在此处描述: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

这与文件夹的作用相同。