我正在尝试创建一个在注册表中创建条目的批处理文件。 该条目必须链接到可执行文件。它需要两个参数:
树:
../somewhere/my/program/program.exe
../DirectoryProject
../DirectoryProject/project1
../DirectoryProject/output.data
例如:
"../somewhere/my/program/program.exe" "../DirectoryProject/project1" "../DirectoryProject"
第一个参数很简单,它是%% 1。它有我右键单击的文件夹路径作为值。然而,最后一个参数更难获得。 我首先尝试操纵变量%% 1。
reg add "%RootKey%\Software\Classes\Directory\shell\%KeyName%\command" /VE /D "cmd /c cd \"%%1\" & \"%Exec%\" \"%%1\" \"%%~dp1\"" /F
程序记录它所显示的参数。最后一个参数等于%% ~dp1,因此它不起作用。
然后我尝试了使用第一个参数和CD命令
的棘手方法reg add "%RootKey%\Software\Classes\Directory\shell\%KeyName%\command" /VE /D "cmd /c cd \"%%1\" & \"%Exec%\" \"%%1\" \"%CD%\"" /F
在这种情况下,%CD%将始终是批处理文件的路径,所以显然不是我想要的内容
我还在寻找
感谢您的关注和帮助
答案 0 :(得分:0)
如果%1
的值是完全限定的现有路径,则根文件夹通常是驱动器号,后跟反斜杠,通常用%~d1\
表示。但是,根据您的最新说明,您似乎正在寻找当前的工作目录,通常表示为%CD%
。
我假设你想操纵%1
的第二个实例,所以根据我的评估,这是我如何做的:
@Echo Off
Set "ExePath=C:\SomePathTo\MadeUp.exe"
Set "MenuTxt=Process with MadeUp"
Set "KeyName=LaunchTest"
Set "RootKey=HKCU"
Reg Add "%RootKey%\Software\Classes\Directory\shell\%KeyName%" /VE /D "%MenuTxt%" /F >Nul
Reg Add "%RootKey%\Software\Classes\Directory\shell\%KeyName%\command" /VE /D "\"%ExePath%\" \"%%~1\" \"%CD%\"" /F >Nul
2
行上的特定可执行路径。Process with MadeUp
以符合您的偏好,您可以在3
行进行。LaunchTest
,这可以在行4
,中更改(当它不再是测试时)。 < / LI>
HKCU
键中输入用户菜单条目,因此我正在使用它。HKCU
更改为{行HKLM
上的{1}}。虽然它与您提供的密钥不符,但这是正确的方法。来自5
和HKCU\Software\Classes
的条目会自动传播到{{ 1}},你不应该直接添加东西。HKLM\SOFTWARE\Classes
,请注意脚本可能需要以管理员的身份运行 HKCR
行上将HKLM
更改为\"%CD%\"
。