Проводник Windows - Различать два файла из контекстного меню?

18

Можно ли как-то различать два выбранных файла из контекстного меню в проводнике Windows?

leeand00
источник

Ответы:

16

Похоже, вам нужно diff-ext !

Это расширение оболочки (diff-ext) позволяет запустить инструмент сравнения файлов для 2 или 3 файлов (в зависимости от инструмента) в одном каталоге или «сохранить» файл (ы) для последующего сравнения. Он действует как внешний список самых последних использованных файлов (MRU) для инструмента сравнения.

Я использую его с KDiff3 , но на странице есть ряд других инструментов сравнения, с которыми его можно использовать.

альтернативный текст

Джон Т
источник
Добро пожаловать!
Джон Т
Не очень хорошо работал на моих окнах 7. Я настроил его с помощью пути к diff.exe, и все, что я получаю, - это что-то мигающее перед моими глазами. Это приложение различно на всех?
Андерс Линден
Работает нормально на Win7, но я использую Meld в качестве инструмента сравнения.
ДжимФред
KDiff3 уже имеет встроенное расширение контекстного меню ( Kdiff3=> Compare), так что если вам нужно что-то быстрое и легкое, этого может быть достаточно.
user121391 21.09.16
Возможно, мне придется попробовать, но я использую исключительно gvim, так что не уверен, насколько хорошо это получится
Antony
8

Вот мое решение, чтобы добавить пункт контекстного меню, вызываемый правой кнопкой мыши, для запуска пользовательской команды (например, вызова Meld) и сравнения двух файлов.

Фон Простые пункты контекстного меню могут быть легко добавлены в регистр Windows (regedit): вручную или путем создания файла .reg (см. Пример ниже).

Проблема в том, что команда будет выполняться для каждого выбранного вами файла. Есть три решения для решения этой проблемы:

  1. Использовать расширения оболочки (сложные)
  2. Убедитесь, что ваше приложение перехватывает различные вызовы (сложно)
  3. Используйте singleinstance.exeиз context-menu-handler (просто). Эта программа делает вариант 2 для вас. Он собирает аргументы в разное время, когда он вызывается, а затем передает их команде, которую вы хотите. Опция тайм-аута, чтобы помочь собрать звонки, которые будут собраны. Перейдите по ссылке для получения дополнительной информации.

Шаг 1 Загрузите файл singleinstance.exe из обработчика контекстного меню (и спасибо автору, с которым я не связан)

Шаг 2 (для сравнения файлов и папок) : Создайте файл с расширением «.reg» со следующим содержимым (пример для Meld с иконкой):

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и команде run (здесь 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
е-Malito
источник
Работал для меня ...
AnthonyVO
1
В целом, мне нравится эта реализация. Однако, к сожалению, он создает новый экземпляр Meld каждый раз, когда используется контекстное меню. Какие-нибудь подсказки для того, чтобы заставить это использовать существующий экземпляр? Я предполагаю, что это было намерениеsingleinstance.exe . Может быть, это не совместимо с Windows 10.
Джим Фелл