注册表中命令的重定向
Redirection for a command in Registry
我正在尝试为每个文件添加右键单击选项,以便它执行命令。乍一看似乎很简单。
右键单击选项
通过进入注册表编辑器,特别是 HKCR\*\shell(代表为每种文件类型出现的上下文菜单选项,因此是“*”),我添加了自己的密钥:
HKEY_CLASSES_ROOT
*
shell
my_right_click_option
(Default) = "Click me!"
command
(Default) = my_command
命令
在此之后,可点击的条目立即出现在上下文菜单中。
在我的例子中,键名为 "checkmd5",命令键的 "Default" 值存储命令 'my_command' 以在单击时执行。
命令是:
"C:\Quite_a_long_path\md5\md5.exe" -n "%1" | clip
-n 选项(一个 md5.exe 开关)只是删除散列后显示的程序名称。
%1 将被右键单击的程序路径替换,并且使用双引号以防任何路径包含一些空格。
可悲的是,我所做的就是执行命令(cmd window 出现并消失,这意味着 cmd 已被执行)而且,为了确定,我检查了 Process Monitor(来自SysInternals Suite)在出现和消失的小 cmd window 中执行的命令行,看起来我输入的命令完全按照我的意愿执行。
尽管如此,即使在命令后附加了“|clip”(将输出重定向到剪贴板)或“> file.txt”(到文件)[我也尝试使用文件的绝对路径],剪贴板不会t 更新,也不会使用命令的输出创建 file.txt。
我似乎无法理解如何让它工作..
非常感谢您 windows 的任何帮助。
再次感谢您的耐心等待,尤其是在结束了这么长的 post 之后。
原来使用重定向的唯一方法是在要执行的命令前添加 cmd.exe /C
以便命令解释器 (cmd.exe) 理解重定向而不是程序待执行 (aprogram.exe).
例如:
aprogram.exe -param0 string > C:\temp\file.txt
不会工作,因为 aprogram.exe 不知道如何操作重定向。
相反,它应该是:
cmd.exe /C aprogram.exe -param0 string > C:\temp\file.txt
我正在尝试为每个文件添加右键单击选项,以便它执行命令。乍一看似乎很简单。
右键单击选项
通过进入注册表编辑器,特别是 HKCR\*\shell(代表为每种文件类型出现的上下文菜单选项,因此是“*”),我添加了自己的密钥:
HKEY_CLASSES_ROOT
*
shell
my_right_click_option
(Default) = "Click me!"
command
(Default) = my_command
命令
在此之后,可点击的条目立即出现在上下文菜单中。 在我的例子中,键名为 "checkmd5",命令键的 "Default" 值存储命令 'my_command' 以在单击时执行。 命令是:
"C:\Quite_a_long_path\md5\md5.exe" -n "%1" | clip
-n 选项(一个 md5.exe 开关)只是删除散列后显示的程序名称。 %1 将被右键单击的程序路径替换,并且使用双引号以防任何路径包含一些空格。 可悲的是,我所做的就是执行命令(cmd window 出现并消失,这意味着 cmd 已被执行)而且,为了确定,我检查了 Process Monitor(来自SysInternals Suite)在出现和消失的小 cmd window 中执行的命令行,看起来我输入的命令完全按照我的意愿执行。 尽管如此,即使在命令后附加了“|clip”(将输出重定向到剪贴板)或“> file.txt”(到文件)[我也尝试使用文件的绝对路径],剪贴板不会t 更新,也不会使用命令的输出创建 file.txt。
我似乎无法理解如何让它工作.. 非常感谢您 windows 的任何帮助。
再次感谢您的耐心等待,尤其是在结束了这么长的 post 之后。
原来使用重定向的唯一方法是在要执行的命令前添加 cmd.exe /C
以便命令解释器 (cmd.exe) 理解重定向而不是程序待执行 (aprogram.exe).
例如:
aprogram.exe -param0 string > C:\temp\file.txt
不会工作,因为 aprogram.exe 不知道如何操作重定向。
相反,它应该是:
cmd.exe /C aprogram.exe -param0 string > C:\temp\file.txt