我将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!