Можно ли как-то различать два выбранных файла из контекстного меню в проводнике Windows?
3 ответа
Похоже, вам нужно diff-ext !
Это расширение оболочки (diff-ext) позволяет запустить инструмент сравнения файлов для 2 или 3 файлов (в зависимости от инструмента) в одном каталоге или "сохранить" файл (ы) для последующего сравнения. Он действует как внешний список самых последних использованных (MRU) файлов для инструмента сравнения.
Я использую его с KDiff3, но на странице есть ряд других инструментов сравнения, с которыми его можно использовать.
Вот мое решение, чтобы добавить пункт контекстного меню, вызываемый правой кнопкой мыши, для запуска пользовательской команды (например, вызова Meld) и сравнения двух файлов.
Фон Простые пункты контекстного меню могут быть легко добавлены в регистр Windows (regedit): вручную или путем создания файла .reg (см. Пример ниже).
Проблема в том, что команда будет выполняться для каждого выбранного вами файла. Есть три решения для решения этой проблемы:
- Использовать расширения оболочки (сложные)
- Убедитесь, что ваше приложение перехватывает различные вызовы (сложно)
- Используйте
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
Beyond Compare и WinMerge также могут сделать это, если вы включите Shell Integration во время установки.