我的目标是能够右键单击一个文件,例如"C:\Users\My PC\folder\file.md"
,在“打开方式”选项下选择我的自定义脚本,然后使用该脚本执行该文件。
我所说的“执行”指的是这样的:
# Somehow capture the file path under a variable
$FilePath = ???
# and open it with some terminal program, such as
nvim $FilePath
# or even a non-terminal program, such as
zathura $FilePath
注意:答案不必拘泥于文字Open With
选项。任何类似的选项(包括来自第三方应用程序的选项)都可以,只要允许右键单击文件并选择将使用该文件路径的脚本即可。
答案1
该REG文件可以作为添加右键菜单选项的模板。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\SystemFileAssociations\.md\shell\myscript]
@="Open with PS Script"
[HKEY_CLASSES_ROOT\SystemFileAssociations\.md\shell\myscript\command]
@="powershell.exe -File \"d:\\scripts\\launch.ps1\" \"%1\""
- 将以上内容复制到记事本。
- 将文件另存为
md.reg
。 - 双击,
md.reg
当要求确认时单击“是”。 - 右键单击 .md 文件,您将看到“使用 PS 脚本打开”选项。
根据需要修改 PS 命令行参数——例如,如果您的脚本使用命名参数,请在命令行中相应地添加参数名称。
选项 2:将多个项目添加为级联菜单
这是一个模板 REG 文件。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\SystemFileAssociations\.md\shell\Open with PS]
"Position"="Middle"
"Icon"="PowerShell.exe"
"SubCommands"=""
[HKEY_CLASSES_ROOT\SystemFileAssociations\.md\shell\Open with PS\shell]
[HKEY_CLASSES_ROOT\SystemFileAssociations\.md\shell\Open with PS\shell\01subcmd]
"Icon"="PowerShell.exe"
"MUIVerb"="Open with Script 1"
[HKEY_CLASSES_ROOT\SystemFileAssociations\.md\shell\Open with PS\shell\01subcmd\command]
@="powershell.exe -File \"d:\\scripts\\launch_1.ps1\" \"%L\""
[HKEY_CLASSES_ROOT\SystemFileAssociations\.md\shell\Open with PS\shell\02subcmd]
"MUIVerb"="Open with Script 2"
"Icon"="PowerShell.exe"
[HKEY_CLASSES_ROOT\SystemFileAssociations\.md\shell\Open with PS\shell\02subcmd\command]
@="powershell.exe -File \"d:\\scripts\\launch_2.ps1\" \"%L\""
[HKEY_CLASSES_ROOT\SystemFileAssociations\.md\shell\Open with PS\shell\03subcmd]
"MUIVerb"="Open with Script 3"
"Icon"="PowerShell.exe"
[HKEY_CLASSES_ROOT\SystemFileAssociations\.md\shell\Open with PS\shell\03subcmd\command]
@="powershell.exe -File \"d:\\scripts\\launch_3.ps1\" \"%L\""
您将获得以下信息:
有关级联菜单的更多信息:
答案2
也许值得大声喊出来打开WithPlusPlus,这是 @w32sh 答案的 GUI 替代方案,您可以在简单易用的 GUI 界面中创建相同类型的“打开方式...”菜单。对于一次性来说,这是一件好事。
但是,如果您想自动执行此过程,我仍然建议使用.reg
或.ps1
文件来更改注册表。