Batch file 如何添加右键单击选项以使用选定文件搜索web';她叫什么名字?

Batch file 如何添加右键单击选项以使用选定文件搜索web';她叫什么名字?,batch-file,command-line,cmd,registry,regedit,Batch File,Command Line,Cmd,Registry,Regedit,我希望在Windows资源管理器的右键菜单中添加一个选项,该选项将启动Chrome并在特定站点中搜索该文件的名称。更具体地说,我希望能够在视频文件中执行此操作,然后查找可用的字幕。我知道有很多程序可以做一些改变,但是在尝试了很多之后,我还没有找到我想要的。不仅如此,我更愿意使用一些轻量级的本机代码,而不是安装另一个程序 我找到的最接近指南的东西是,但它不太管用。当然,我已经试着清理它以满足我的需要,但它仍然不起作用,所以我认为它有一个缺陷。这是我到目前为止所拥有的 以管理员身份运行命令提示符,我

我希望在Windows资源管理器的右键菜单中添加一个选项,该选项将启动Chrome并在特定站点中搜索该文件的名称。更具体地说,我希望能够在视频文件中执行此操作,然后查找可用的字幕。我知道有很多程序可以做一些改变,但是在尝试了很多之后,我还没有找到我想要的。不仅如此,我更愿意使用一些轻量级的本机代码,而不是安装另一个程序

我找到的最接近指南的东西是,但它不太管用。当然,我已经试着清理它以满足我的需要,但它仍然不起作用,所以我认为它有一个缺陷。这是我到目前为止所拥有的

以管理员身份运行命令提示符,我执行以下两行将它们添加到注册表:

REG ADD "HKLM\software\Classes\*\shell\Subtitle Search" /d "Subtitle Search"
REG ADD "HKLM\software\Classes\*\shell\Subtitle Search\Command" /d "C:\My Projects\My Code\SubtitleSearch.bat ""%1"""
首先,我创建了一个批处理文件(SubtitleSearch.bat),其中包含以下内容:

set xGOOGLESEARCH=%~nx1
cmd /c "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" "http://subscene.com/subtitles/title?q=%xGOOGLESEARCH%"
这看起来很简单,但不起作用。相反,Windows认为我正在尝试打开该文件,并询问我要使用什么程序。顺便说一句,如果我选择Chrome,它实际上会在一个选项卡中开始播放视频

我确信问题在于注册表代码,但我不知道如何告诉系统我不想打开右键单击的文件;我只想使用它的文件名。我对注册表很熟悉,但没有足够的技术来了解问题所在


提前感谢您的帮助

批处理文件路径包含空格,因此必须用引号将其括起来:

REG ADD "HKLM\software\Classes\*\shell\Subtitle Search\Command" /d "\"C:\My Projects\My Code\SubtitleSearch.bat\" \"%1\""

我认为您不需要将命令行末尾的“%1”内容放在注册表中。选择用于打开文件的可执行文件隐式获取目标文件%1。无需在命令行中明确说明这一点。事实上,我认为%1甚至没有在该上下文中定义,只是在批处理文件中定义。最后一部分可能被解释为文本参数字符串,这对于批处理解释器来说没有意义。您是否尝试在批处理文件顶部的某个位置使用回声%1检查其值

编辑:该死!4年9个月等待进一步的答案。。。我为你感到难过:(

代码中的问题:

  • 使用
    reg
    命令,即
    ”\“\”
    时,用反斜杠转义内部双引号
  • 转义
    %
    用另一个
    %
    签名,以便
    reg
    可以将文本
    %1
    %1
    添加到
    %1
  • “Windows认为我正在试图打开文件”可能是由于双重引用问题造成的,因为我尚未复制
  • 如果命令周围有双引号,并且有两个以上的双引号,CMD可能会去掉双引号。 查看分析规则的
    cmd/?

    如果指定了/C或/K,则在 开关作为命令行处理,其中包含以下逻辑 用于处理引号(“)字符:

  • 如果满足以下所有条件,则引用字符 在命令行上,将保留:

    • no/S开关
    • 正好两个引号字符
    • 两个引号字符之间没有特殊字符, 其中,special是以下之一:&()@^|
    • 字符之间有一个或多个空白字符 双引号字符
    • 两个引号字符之间的字符串是名称 一个可执行文件的名称
  • 否则,旧的行为是查看第一个字符是否为 一个引号字符,如果是的话,去掉前导字符并 删除命令行上的最后一个引号字符,保留 最后一个引号字符后的任何文本

我已将脚本集于一身,因此您可以通过以下方式进行注册:

search /register
预期产出:

确保将命令提示符用作管理员,因为注册到
HKLM
分支可能需要它。脚本所在的位置是添加到注册表的路径。因此,不要只在任何位置注册,稍后将其移动到正确的路径

通过以下方式查询注册表项:

search /query
预期产出:

通过以下方式查看帮助消息:

search /?
如果在
:search
标签中取消注释
wmic
命令,则在open console中执行搜索的输出为:

默认情况下,此命令应作为注释禁用,或作为仅用于检查命令行的添加命令删除

如果startpage.com用于搜索引擎,Chrome将在此URL打开:

如果上面提到的两个参数都没有传递,并且第一个参数是什么,那么就用Chrome进行搜索。没有任何参数会结束脚本,因为这对什么都不处理是无用的

我无法访问
subscene.com
网站,因此我添加了一些其他URL以进行测试

cmd
命令被禁用,并且添加了使用
start
,因此控制台窗口关闭,Chrome打开。我将
cmd
留在脚本中,以便您可以看到它可以工作

注销:

search /unregister
预期产出:


确保将命令提示符用作管理员,因为从
HKLM
分支注销可能需要它。脚本的位置无关紧要,因为它会删除整个注册表项。

为什么不创建一个.reg文件,创建一个右键单击菜单,执行您尝试执行的操作?我不清楚您的目标,所以我只能这样做做

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\StartChrome]
@="Start google chrome and search for ____ website"
[HKEY_CLASSES_ROOT\*\shell\StartChrome\command]
@="cmd /min /c \"start chrome.exe google.com"
这是一个.reg文件,它创建了一个右键单击菜单提示,上面写着“
启动google chrome并搜索网站”
”,然后启动chrome并转到google.com。在最后一部分的“报价单”中,输入激活时右键单击要执行的操作。在第一部分的“代码>=”“part,您可以在右键单击菜单中选择要显示的内容
search /?
CommandLine
cmd /c ""C:\My Projects\My Code\search.cmd" "C:\My Projects\My Code\Alice In Wonderland.mp4""

Press any key to continue . . .
https://www.startpage.com/do/search/?q=Alice%20In%20Wonderland
search /unregister
Unregister subtitle search
The operation completed successfully.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\StartChrome]
@="Start google chrome and search for ____ website"
[HKEY_CLASSES_ROOT\*\shell\StartChrome\command]
@="cmd /min /c \"start chrome.exe google.com"
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\StartChrome]
@="Start google chrome and search for ____ website"
[HKEY_CLASSES_ROOT\*\shell\StartChrome\command]
@="cmd /min /c \"start chrome.exe 'http://subscene.com/subtitles/title?q=%~nx1'"