将文件扩展名与特定程序相关联

To associate file extension with specific program

我正在尝试将特定文件扩展名与特定程序相关联。例如,当我在 .txt 文件上按 Enter 时,它应该在 Sublime Text 中打开。或者可能在 Vim。或者可能在 Chrome.

我需要用命令行来实现。乍一看,可以通过以下方式实现:

FTYPE txtfile=C:\Program Files\Google\Chrome\Application\chrome.exe "%1"
ASSOC .txt=txtfile

但实际上它对我没有任何作用:.txt 文件在 Sublime Text 中打开,而不是在浏览器中打开。

我做错了什么?

我希望以下功能能按预期运行,尽管我不愿意提出建议

@"%__AppDir__%reg.exe" Add "HKCU\Software\Classes\.txt" /VE /D "txtfile" /F > NUL
@"%__AppDir__%reg.exe" Add "HKCU\Software\Classes\txtfile" /VE /D "Text Document" /F > NUL
@"%__AppDir__%reg.exe" Add "HKCU\Software\Classes\txtfile\shell\open\command" /VE /D "\"%ProgramFiles%\Google\Chrome\Application\chrome.exe\" \"%%L\"" /F > NUL

"%__AppDir__%reg.exe" Add "HKCU\Software\Classes\.txt" /VE /D "txtfile" /F > NUL
"%__AppDir__%reg.exe" Add "HKCU\Software\Classes\txtfile" /VE /D "Text Document" /F > NUL
"%__AppDir__%reg.exe" Add "HKCU\Software\Classes\txtfile\shell\open\command" /VE /D "\"%ProgramFiles%\Google\Chrome\Application\chrome.exe\" \"%L\"" /F > NUL

试试这个:

@echo off && setlocal EnableDelayedExpansion

title <nul && title ...\%~nx0 && cd /d "%~dp0" && mode 50,6 && echo/
for %%i in (ProgramFiles,ProgramFiles(x86^),ProgramW6432)do if /i defined %%~i (
    for /f tokens^=^* %%z in ('%__APPDIR__%where.exe /r "!%%~i!" "chrome.exe" 2^>nul
    ')do set "_path_chrome=%%~z" && goto :_reg_add_: 
     )

:_reg_add_:
>nul (
"%__APPDIR__%reg.exe" add "HKCU\Software\Classes\.txt" /ve /d "txtfile" /f
"%__APPDIR__%reg.exe" add "HKCU\Software\Classes\txtfile" /ve /d "Text Document" /f
"%__APPDIR__%reg.exe" add "HKCU\Software\Classes\txtfile\shell\open\command" /ve /d "\"!_path_chrome:\=\!\" \"file:///%%L\"" /f
) 2>nul && endlocal || (endlocal && echo/Something is very wrong here^!!) & %__APPDIR__%timeout.exe -1

使用for循环得到Chrome.exe的完整路径,保存到变量中替换\\ 用于在寄存器中添加路径值...

在 Windows 中添加条目使用此布局注册:

1) 使用 %%L 代替 %L

2) 使用 \"file:///%%L\" 代替 \"%L\"

3) 使用 "\"!_path_chrome:\=\!\" 代替 \"!_path_chrome\"

Use: \"C:\Program Files\Google\Chrome\Application\chrome.exe\"

Not: \"C:\Program Files\Google\Chrome\Application\chrome.exe\"