以编程方式将文件扩展名与 Windows 上的应用程序关联

以编程方式将文件扩展名与 Windows 上的应用程序关联

我最近刚刚重新安装了 Windows,在设置我的环境时,我注意到我在 Notepad++ 中编辑的各种编程语言的所有关联都消失了(自然而然)。

我正在考虑未来,如果有某种批处理文件,只需单击按钮即可自动将选择的文件扩展名与 N++ 关联起来,而不是必须等到我遇到所有这些扩展名,然后经过繁琐的导航到 N++ exe 等,那不是很棒吗?

我无法使用Default ProgramsWindows 7 附带的实用程序执行此操作,因为它仅适用于已“遇到”的扩展。

那么,是否可以通过编程将文件扩展名与 Windows 上的应用程序关联起来?

答案1

使用 Ftype 和 Assoc 来修复这个问题(并且它是可编写脚本的)。

使用 Assoc 获取文件类型

>Assoc .txt

给你:

.txt = txt文件

然后

>Ftype txtfile=C:\Program Files (x86)\Notepad++\notepad++.exe %1

一旦知道文件类型,您就可以使用 Ftype 将其与操作关联。

这对 .php 文件有效(只需将它们放入批处理文件中)

Assoc .php=phpfile
Ftype phpfile="C:\Program Files (x86)\Notepad++\notepad++.exe" %1

您可以复制这些行来根据需要添加其他基于文本的文件。

答案2

这是一个在 Windows 10 上对我有用的脚本

$exts=@("txt","log","csproj","sql","xml","flobble")
echo "## setting up file associations"
foreach ($ext in $exts){
    $extfile=$ext+"file"
    $dotext="." + $ext
    cmd /c assoc $dotext=$extfile
    cmd /c "ftype $extfile=""C:\Program Files (x86)\Notepad++\notepad++.exe"" ""%1"""
    echo ""
}
  • 需要在管理员(提升)的 PowerShell 窗口中运行。
  • 资源管理器立即刷新并显示新的文件图标。

https://gist.github.com/timabell/bc90e0808ec1cda173ca09225a16e194

感谢其他答案为我提供完成这项工作所需的信息。

答案3

至少,您需要创建一个注册表项,为 notepad++ 提供一个 ID 和路径,然后为您希望注册的每个扩展创建一个注册表项以使用它。

创建 ID 和路径(检查路径是否指向正确的位置):

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\notepad_pp]
@=""

[HKEY_CLASSES_ROOT\notepad_pp\shell]

[HKEY_CLASSES_ROOT\notepad_pp\shell\open]

[HKEY_CLASSES_ROOT\notepad_pp\shell\open\command]
@="\"C:\\Program Files (x86)\\Notepad++\\notepad++.exe\" \"%1\""

然后继续重复下一个位,每个扩展一个位(在此示例中,.pl针对 Perl):

[HKEY_CLASSES_ROOT\.pl]
@="notepad_pp"

将此文件与扩展名一起保存.reg,现在您只需双击此文件并确认要将条目导入注册表即可重新关联所有扩展名。

相关内容