Eksplorator Windows - czy różnią się dwa pliki z menu kontekstowego?

18

Czy jest jakiś sposób na różnicowanie dwóch wybranych plików z menu kontekstowego w Eksploratorze Windows?

leeand00
źródło

Odpowiedzi:

16

Wygląda na to, że potrzebujesz diff-ext !

To rozszerzenie powłoki (diff-ext) umożliwia uruchomienie narzędzia do porównywania plików dla 2 lub 3 plików (w zależności od narzędzia) w tym samym katalogu lub „zapisanie” pliku (plików) do późniejszego porównania. Działa jako zewnętrzna lista ostatnio używanych plików (MRU) dla narzędzia porównawczego.

Używam go z KDiff3 , ale na stronie znajduje się wiele innych narzędzi do porównywania.

alternatywny tekst

John T.
źródło
Nie ma za co!
John T
Nie działał dobrze w moim systemie Windows 7. Skonfigurowałem go ze ścieżką do pliku diff.exe i wszystko, co dostaję, to coś mrugającego na moich oczach. Czy ta aplikacja w ogóle jest świadoma?
Anders Lindén
Działa OK na Win7, ale używam Meld jako narzędzia różnicowego.
JimFred
KDiff3 ma już zintegrowane rozszerzenie menu kontekstowego ( Kdiff3=> Compare), więc jeśli potrzebujesz czegoś szybkiego i łatwego, może to wystarczyć.
user121391,
Być może będę musiał spróbować, ale używam wyłącznie gvim, więc nie jestem pewien, jak dobrze się to okaże
Antony
8

Oto moje rozwiązanie, aby dodać pozycję menu kontekstowego Kliknij prawym przyciskiem myszy, aby uruchomić niestandardowe polecenie (takie jak wywołanie Meld) i różnicować dwa pliki.

Tło Proste wpisy menu kontekstowego można łatwo dodać do rejestru Windows (regedit): ręcznie lub poprzez utworzenie pliku .reg (patrz przykład poniżej).

Problem polega na tym, że polecenie zostanie uruchomione dla każdego wybranego pliku. Istnieją trzy rozwiązania tego problemu:

  1. Użyj rozszerzeń powłoki (skomplikowane)
  2. Upewnij się, że aplikacja przechwytuje różne połączenia (skomplikowane)
  3. Użyj singleinstance.exez modułu obsługi menu kontekstowego (proste). Ten program ma dla Ciebie opcję 2. Zbiera argumenty z różnych wywoływanych czasów, a następnie przekazuje je do żądanego polecenia. Dostępna jest opcja limitu czasu, która pomaga zbierać połączenia do odebrania. Kliknij link, aby uzyskać więcej informacji.

Krok 1 Pobierz singleinstance.exe z programu obsługi menu kontekstowego (i dziękuję autorowi, z którym nie jestem związany)

Krok 2 (do porównania plików i folderów) : Utwórz plik z rozszerzeniem „.reg” o następującej treści (przykład dla Melduj z ikoną):

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"

Plik reg tworzy pozycję menu kontekstowego oznaczoną „Diff It!” dla wszystkich plików ( *) i folderów ( Folder). Linie zawierające znak Iconmożna usunąć, jeśli nie chcesz ikony.

Dostosuj ścieżkę programu singleinstance.exei uruchom polecenie (tutaj C:\Program Files (x86)\Meld\Meld.exe. Zwróć uwagę na odstępy między znakami backspace i cudzysłowy

Krok 3 Uruchom .regplik. Dwukrotne kliknięcie może działać, jeśli jesteś administratorem. W przeciwnym razie otwórz wiersz polecenia administratora w swoim folderze (w Eksploratorze: Plik> Otwórz polecenie> Otwórz polecenie jako administrator. Alt-F-M-A). Po prostu wpisz nazwę .regpliku, aby dodać go do rejestru.

Otóż ​​to.

(odinstaluj) Możesz usunąć klucze ręcznie z rejestru lub utworzyć .regplik o następującej treści:

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\*\shell\DiffIt_Files]

[-HKEY_CLASSES_ROOT\Folder\shell\DiffIt_Folders] 

Alternatywa Użyj oprogramowania, aby dodać, edytować i usunąć pozycje menu kontekstowego, takie jak ContextEdit (ale nie można łatwo dodać ikony). W takim przypadku nie musisz uciekać przed ukośnikami i cudzysłowami, aby polecenie wyglądało następująco:

"c:\Bin\singleinstance.exe "%1" "C:\Program Files (x86)\Meld\Meld.exe" $files --si-timeout 400
e-malito
źródło
Pracował dla mnie ...
AnthonyVO
1
Ogólnie podoba mi się to wdrożenie. Niestety, tworzy nowe wystąpienie Meld za każdym razem, gdy używane jest menu kontekstowe. Czy masz jakieś wskazówki dotyczące korzystania z istniejącej instancji? Zakładam, że taki był zamiar singleinstance.exe. Może nie jest kompatybilny z Windows 10.
Jim Fell,
0

Możesz utworzyć plik wsadowy za pomocą polecenia niestandardowego, a następnie dodać do niego skrót shell:sendto. Jako bonus, pozwala to również uniknąć zmiany rejestru.

Zainspirowany tą odpowiedzią na Przepełnienie stosu , na przykład:

1a. Utwórz nowy plik za pomocą:

    @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. Zmień polecenie start , np. Zmień odpowiednio ścieżkę do narzędzia porównywania i kolejne argumenty wiersza poleceń.

  1. Zapisz plik wsadowy w trwałym katalogu, np C:\Users\You\Compare With My Tool.cmd.

  2. Utwórz skrót do Compare With My Tool.cmdpliku w środku shell:sendto. Nazwa skrótu jest widoczna w menu kontekstowym Wyślij do. Ikona pojawiająca się w powłoce jest ikoną skrótu, który można zmienić za pomocą menu właściwości pliku.

  3. Wybierz dwa pliki do porównania, kliknij prawym przyciskiem myszy i wybierz Wyślij do> Porównaj z moim narzędziem (lub jakikolwiek skrót nazwałeś)

kjhf
źródło