有没有办法从 Windows 资源管理器的上下文菜单中比较两个选定的文件的差异?
答案1
答案2
这是我的解决方案,添加右键单击上下文菜单项来运行自定义命令(如调用 Meld)并比较两个文件。
背景 简单的上下文菜单条目可以轻松地添加到 Windows 注册表(regedit)中:手动或通过创建 .reg 文件(参见下面的示例)。
问题是该命令将针对您选择的每个文件运行。有三种解决方案可以解决这个问题:
- 使用 Shell 扩展(复杂)
- 确保您的应用程序能够捕获不同的调用(复杂)
- 使用
singleinstance.exe
自上下文菜单处理程序(简单)。此程序为您执行选项 2。它从调用的不同时间收集参数,然后将它们传递给您想要的命令。超时选项可用于帮助收集要收集的调用。单击链接获取更多信息。
步骤1从以下位置下载 singleinstance.exe上下文菜单处理程序(并感谢作者,我和他并无关系)
第 2 步(文件和文件夹比较):创建一个扩展名为“.reg”的文件,内容如下(以带有图标的 Meld 为例):
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\DiffIt_Files]
@="Diff it!"
"Icon"="C:\\Program Files (x86)\\Meld\\Meld.exe"
[HKEY_CLASSES_ROOT\*\shell\DiffIt_Files\command]
@="\"c:\\Bin\\singleinstance.exe\" \"%1\" \"C:\\Program Files (x86)\\Meld\\Meld.exe\" $files --si-timeout 400"
[HKEY_CLASSES_ROOT\Folder\shell\DiffIt_Folders]
@="Diff It!"
"Icon"="C:\\Program Files (x86)\\Meld\\Meld.exe"
[HKEY_CLASSES_ROOT\Folder\shell\DiffIt_Folders\command]
@="\"c:\\Bin\\singleinstance.exe\" \"%1\" \"C:\\Program Files (x86)\\Meld\\Meld.exe\" $files --si-timeout 400"
*
reg 文件为所有文件 ( ) 和文件夹 ( )创建了一个名为“Diff It!”的上下文菜单项。如果您不想要图标,可以删除Folder
包含 的行。Icon
调整程序的路径singleinstance.exe
和运行的命令(此处C:\Program Files (x86)\Meld\Meld.exe
。请注意退格键和引号的转义
步骤3运行该.reg
文件。如果您是管理员,双击它可能会起作用。否则,在您的文件夹中打开管理员命令提示符(在资源管理器中:文件>打开命令>以管理员身份打开命令。或Alt-F-M-A
)。只需键入文件的名称.reg
即可将其添加到注册表。
就是这样。
(卸载)您可以手动删除注册表中的项,也可以创建.reg
包含以下内容的文件:
Windows Registry Editor Version 5.00
[-HKEY_CLASSES_ROOT\*\shell\DiffIt_Files]
[-HKEY_CLASSES_ROOT\Folder\shell\DiffIt_Folders]
选择使用软件添加-编辑-删除上下文菜单条目,如 ContextEdit(但无法轻松添加图标)。在这种情况下,您不需要转义斜杠和引号,因此命令将如下所示:
"c:\Bin\singleinstance.exe "%1" "C:\Program Files (x86)\Meld\Meld.exe" $files --si-timeout 400
答案3
答案4
您可以使用自定义命令创建一个批处理文件,然后在 中添加它的快捷方式shell:sendto
。另外,这还可以避免更改注册表。
灵感来自这个 Stack Overflow 上的答案, 例如:
1a. 创建一个新文件:
@echo off
setlocal
start "Compare files" /B /MIN "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.exe" /diff %2 %1 First:'%2' Second:'%1'
1b. 更改启动命令例如,根据需要更改比较工具的路径和后续命令行参数。
将批处理文件保存到永久目录,例如
C:\Users\You\Compare With My Tool.cmd
。Compare With My Tool.cmd
在 中创建文件的快捷方式shell:sendto
。快捷方式的名称就是您在“发送到”上下文菜单中看到的名称。在 shell 中显示的图标是快捷方式的图标,您可以使用文件属性菜单更改它。选择要比较的两个文件,右键单击,然后选择发送到 > 与我的工具比较(或您命名的快捷方式)