14

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

3 ответа3

12

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

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

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

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

5

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

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

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

  1. Использовать расширения оболочки (сложные)
  2. Убедитесь, что ваше приложение перехватывает различные вызовы (сложно)
  3. Используйте 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:\\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
2

Beyond Compare и WinMerge также могут сделать это, если вы включите Shell Integration во время установки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .