Windows资源管理器-从上下文菜单中区分两个文件?


Answers:


16

听起来您需要diff-ext

此外壳程序扩展名(diff-ext)使得可以在同一目录中启动2个或3个文件(取决于工具)的文件比较工具,或“保存”文件以供以后比较。它充当比较工具的外部最近使用(MRU)文件列表。

我将它与KDiff3一起使用,但可以在其页面上使用许多其他差异工具。

替代文字


非常欢迎您!
约翰T

在Windows 7上无法正常工作。我已经用diff.exe的路径配置了它,而我所得到的只是眼前闪烁的东西。该应用程序是否完全了解差异?
安德斯·林登2014年

在Win7上可以正常工作,但我使用Meld作为差异工具。
JimFred

KDiff3现在已经集成了上下文菜单扩展(Kdiff3=> Compare),因此,如果您只需要快速简便的内容,那就足够了。
user121391

我可能不得不这样做,但我只使用gvim,所以不确定结果会如何
Antony

8

这是我的解决方案,添加一个右键单击上下文菜单项以运行自定义命令(如调用Meld)并比较两个文件。

背景信息 简单的上下文菜单项可以轻松地添加到Windows注册(regedit)中:手动或通过创建.reg文件(请参见下面的示例)。

问题在于该命令将针对您选择的每个文件运行。有以下三种解决方案:

  1. 使用Shell扩展(复杂)
  2. 确保您的应用程序捕获了不同的调用(复杂)
  3. 使用singleinstance.exe上下文菜单句柄(简单)。该程序为您执行选项2。它从调用的不同时间收集参数,然后将其传递给所需的命令。可以使用超时选项来帮助收集要收集的呼叫。点击链接获取更多信息。

第1步上下文菜单处理程序中下载singleinstance.exe (并感谢与我无关的作者)

步骤2(用于文件和文件夹比较):创建具有以下内容的扩展名“ .reg”的文件(例如,带有图标的融合示例):

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\DiffIt_Files]
@="Diff it!"
"Icon"="C:\\Config\\look\\Icons\\Meld.ico"

[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:\\Config\\look\\Icons\\Meld.ico"

[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

为我工作...
AnthonyVO

1
总的来说,我喜欢这种实现。但是,可悲的是,每次使用上下文菜单时,它都会创建一个新的Meld实例。有关使用现有实例的任何提示?我认为这是的意图singleinstance.exe。也许这不是与Windows 10兼容
吉姆·费尔


0

您可以使用custom命令创建一个批处理文件,然后在中添加一个快捷方式shell:sendto。另外,这还避免了更改注册表。

受此堆栈溢出答案的启发,例如:

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。更改启动命令,例如,适当地更改比较工具的路径和后续命令行参数。

  1. 将批处理文件保存到永久目录,例如C:\Users\You\Compare With My Tool.cmd

  2. 在中创建Compare With My Tool.cmd文件的快捷方式shell:sendto。快捷方式的名称就是您将在“发送到”上下文菜单上看到的名称。出现在外壳中的图标是快捷方式的图标,您可以使用文件属性菜单进行更改。

  3. 选择要比较的两个文件,单击鼠标右键,然后选择“发送到”>“与我的工具比较”(或您命名为快捷方式的任何名称)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.