Windows 资源管理器“使用”自定义 powershell 脚本打开

Windows 资源管理器“使用”自定义 powershell 脚本打开

我的目标是能够右键单击一个文件,例如"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\""
  1. 将以上内容复制到记事本。
  2. 将文件另存为md.reg
  3. 双击, md.reg当要求确认时单击“是”。
  4. 右键单击 .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\""

您将获得以下信息:

在此处输入图片描述

有关级联菜单的更多信息:

  1. 如何使用子命令注册表项创建级联菜单 (Windows) | Microsoft 学习
  2. 使用 ExtendedSubCommandsKey 注册表项创建级联菜单 - Win32 应用 | Microsoft Learn
  3. 示例:添加级联菜单选项

答案2

也许值得大声喊出来打开WithPlusPlus,这是 @w32sh 答案的 GUI 替代方案,您可以在简单易用的 GUI 界面中创建相同类型的“打开方式...”菜单。对于一次性来说,这是一件好事。

但是,如果您想自动执行此过程,我仍然建议使用.reg.ps1文件来更改注册表。

相关内容