文件类型关联错误

文件类型关联错误

我将doskey宏保存在一个带有文件扩展名的单独文件中,并可以使用特定的控制台会话.macro加载它们doskey /macrofile=macros.macro

我想使用 Windows 操作系统的文件类型关联功能来加载它们,而不必每次都输入命令(可执行文件的名称或路径)

因此我使用两个内置cmd.exe命令:

assoc .macro=macro
ftype macro="doskey /macrofile=%1"

没有错误,但是当我执行文件时弹出消息,基本上不起作用

之前我尝试关联.reg文件并且成功了,这里的问题似乎是开关reg import %1中的等号,我认为系统无法处理它doskey/macrofile=

我认为,尽管/可执行文件名称后的开关()和子命令可以使用参数,但=不知何故却无法做到这一点

所以我寻求解决方案:)

答案1

ftype在“=”上拆分其参数,并且不提供任何方法来转义命令中的第二个“=”字符。幸运的是,此命令只添加了一个简单的注册表设置,您可以reg在提升的命令提示符中手动添加它:

assoc .macro=macrofile
set k=HKLM\Software\Classes\macrofile\shell\open\command
set d="\"%SystemRoot%\system32\doskey.exe\" /macrofile=\"%1\""
reg add %k% /f /ve /d %d%

或者创建一个可以使用regedit或导入的 .reg 文件reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\Software\Classes\.macro]
@="macrofile"

[HKEY_LOCAL_MACHINE\Software\Classes\macrofile]

[HKEY_LOCAL_MACHINE\Software\Classes\macrofile\shell]

[HKEY_LOCAL_MACHINE\Software\Classes\macrofile\shell\open]

[HKEY_LOCAL_MACHINE\Software\Classes\macrofile\shell\open\command]
@="\"C:\\Windows\\system32\\doskey.exe\" /macrofile=\"%1\""

例子:

C:\>assoc .macro
.macro=macrofile
C:\>ftype macrofile
macrofile="C:\Windows\system32\doskey.exe" /macrofile="%1"

C:\>doskey /macros:all
[cmd.exe]

C:\>spam.macro
C:\>doskey /macros:all
[cmd.exe]
    spam=echo spam!

C:\>spam
spam!

相关内容