You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改注册表命令:让程序在自身目录启动并传入点击文件路径

解决双击文件时程序启动目录的问题

我编写了一个批处理文件,用于创建注册表项,实现双击特定扩展名的文件来打开指定程序。当前程序会在被点击文件所在的目录启动,需要改为在%pathtoexe%所在目录启动程序,同时传入被点击文件的完整路径作为参数。

原批处理代码如下:

for %%A in ("%~dp0.") do set "folder=%%~dpA"

set "ftypename=release"
set "extension=.pmp"
set "pathtoexe=%folder%TranslationUpdater.exe"
set "pathtoicon=%~dp0file_type_favicon.ico"

REG ADD HKCU\SOFTWARE\Classes\%extension% /ve /d "%ftypename%" /f
REG ADD HKCU\SOFTWARE\Classes\%ftypename%\DefaultIcon /ve /d "%pathtoicon%" /f
reg add HKCU\SOFTWARE\Classes\%ftypename%\Shell\Open\Command /ve /d ""%pathtoexe%" "%%1"" /f

ftype %ftypename%="%pathtoexe%" "%%1"
assoc %extension%=%ftypename%

需要让注册表命令行包含切换目录后启动程序的逻辑,类似:

cd %folder%
start %pathtoexe% %1

修改后的批处理代码

for %%A in ("%~dp0.") do set "folder=%%~dpA"

set "ftypename=release"
set "extension=.pmp"
set "pathtoexe=%folder%TranslationUpdater.exe"
set "pathtoicon=%~dp0file_type_favicon.ico"

REG ADD HKCU\SOFTWARE\Classes\%extension% /ve /d "%ftypename%" /f
REG ADD HKCU\SOFTWARE\Classes\%ftypename%\DefaultIcon /ve /d "%pathtoicon%" /f
:: 切换到exe所在目录后启动程序,确保启动路径正确
reg add HKCU\SOFTWARE\Classes\%ftypename%\Shell\Open\Command /ve /d "cmd /c cd /d "%folder%" && start "" "%pathtoexe%" "%%1"" /f

:: 同步更新ftype的命令,保持行为一致
ftype %ftypename%=cmd /c cd /d "%folder%" && start "" "%pathtoexe%" "%%1"
assoc %extension%=%ftypename%

改动说明

  • 核心修改了注册表Shell\Open\Command和ftype的命令值,通过cmd /c串联两个操作:
    1. cd /d "%folder%":使用/d参数确保跨盘符切换到exe所在的目录
    2. start "" "%pathtoexe%" "%%1":start后的空字符串""是标题参数,避免程序路径含空格时出现错误,同时传入被点击文件的完整路径作为参数

内容的提问来源于stack exchange,提问作者rastorguev.i.a

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 14:30:31