注册表中命令的重定向

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