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

Вопрос или проблема

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

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

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

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

alt text

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

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

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

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

Шаг 1 Скачайте singleinstance.exe с context-menu-handler (и поблагодарите автора, с которым я не связан)

Шаг 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

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

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

Вдохновлено этим ответом на Stack Overflow, например:

1a. Создайте новый файл с:

    @echo off
    setlocal
    start "Сравнить файлы" /B /MIN "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.exe" /diff %2 %1 First:'%2' Second:'%1'

1b. Измените команду start, например, измените путь к вашему инструменту сравнения и последующим аргументам командной строки по мере необходимости.

  1. Сохраните пакетный файл в постоянной директории, например C:\Users\You\Compare With My Tool.cmd.

  2. Создайте ярлык к вашему файлу Compare With My Tool.cmd внутри shell:sendto. Имя ярлыка — это то, что вы увидите в контекстном меню “Отправить в”. Иконка, которая появляется в оболочке, — это иконка ярлыка, и вы можете изменить это с помощью меню свойств файла.

  3. Выделите два файла для сравнения, щелкните правой кнопкой мыши и выберите “Отправить в” > “Compare With My Tool” (или как вы назвали свой ярлык)

Ответ или решение

Как сравнить два файла через контекстное меню в Windows Explorer: Подробная инструкция

Сравнение файлов — это важная задача, которая часто требуется IT-специалистам, разработчикам и пользователям. В Windows Explorer нет встроенной функции для "diff" (различий) между несколькими файлами, но есть несколько способов это сделать с максимальным удобством.

Идеальный инструмент: DiffExt

Первое решение, которое стоит рассмотреть, — это использование расширения для оболочки Windows под названием DiffExt. Это расширение позволяет вам сравнивать два или три файла с помощью вашего любимого инструмента для сравнения.

Основные особенности DiffExt:

  • Позволяет запускать инструменты для сравнения файлов прямо из контекстного меню.
  • Обеспечивает простоту использования и интеграцию с различными инструментами, такими как KDiff3, Beyond Compare и WinMerge.

Установка DiffExt

  1. Скачайте и установите DiffExt.
  2. Выберите нужный вам инструмент для сравнения, например, KDiff3.

Таким образом, вы сможете быстро сравнивать файлы, не открывая каждую из программ вручную.

Создание пользовательского меню для сравнения файлов

Если вам необходимо использовать определенный инструмент, например, Meld, вы можете добавить пользовательскую команду в контекстное меню через редактор реестра Windows.

Пошаговая инструкция:

Шаг 1: Загрузка и подготовка
  1. Скачайте singleinstance.exe с GitHub. Этот помощник будет собирать вызовы и передавать их в нужный инструмент.
Шаг 2: Создание файла реестра
  1. Создайте текстовый файл с расширением .reg и добавьте следующий код (замените пути на соответствующие вашей системе):
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"
Шаг 3: Запуск файла реестра
  1. Дважды щелкните по вашему .reg файлу, чтобы добавить его в реестр. Если у вас нет прав администратора, откройте командную строку от имени администратора и введите имя вашего файла.

Удаление пользовательских записей

Если вы хотите удалить созданные вами записи, создайте файл .reg с таким содержанием:

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\*\shell\DiffIt_Files]

[-HKEY_CLASSES_ROOT\Folder\shell\DiffIt_Folders] 

Альтернативные методы

  1. Использование Shell Integration: Программы, такие как Beyond Compare и WinMerge, могут добавлять интеграцию с оболочкой во время установки. Убедитесь, что вы выбрали данную опцию.
  2. Создание пакетного файла: Вы можете создать .bat файл для запуска вашей команды. Например:
@echo off
start "Compare files" /B /MIN "C:\Program Files (x86)\YourComparisonTool.exe" /diff %2 %1

Этот файл можно разместить в каталоге shell:sendto, чтобы легко использовать его из контекстного меню.

Заключение

Использование контекстного меню для сравнения файлов в Windows Explorer — это удобство и эффективный подход, который значительно облегчает работу. Понимание, какIntegrate подобные инструменты, позволяет каждому пользователю повысить свою производительность в повседневных задачах.

Оцените материал
Добавить комментарий

Капча загружается...