将文件扩展名与特定程序相关联
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\"
我正在尝试将特定文件扩展名与特定程序相关联。例如,当我在 .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\"