Comp – polecenie służące do porównywania plików lub zestawów plików z poziomu wiersza poleceń CMD, Powershell lub Windows Terminal.
Składnia comp
comp [lokalizacja1] [lokalizacja2] [opcje]
[lokalizacja 1] = ścieżka pierwszego pliku do porównania.
[lokalizacja 2] = ścieżka drugiego pliku do porównania z pierwszym.
Można odwoływać się również do zestawów kilku plików.
Polecenie wspiera wyrazy wieloznacznie * (ang. Wildcards).
Opcje:
/D = Wyświetla różnice w systemie dziesiętnym (domyślnym jest system szesnastkowy).
/A = Wyświetla różnice jako znaki (konwertując je z systemu kodowania ASCII* na tekst).
/L = Wyświetla numery wierszy z różnicami.
/N=<liczba> = Porównuje tylko pierwszą liczbę <liczba> wierszy w plikach, np. /N=5 porówna tylko 5 pierwszych linii.
/C = Wykonuje porównanie bez uwzględniania wielkości liter.
/OFF[LINE] = Nie pomija plików o atrybucie offline.
/M = Nie pyta o porównanie większej ilości plików po zakończeniu porównania.
Wyniki porównania comp:
Domyślnie comp pokazuje różnice w notacji szesnastkowej, wykazując różnice o nierównych bajtach. Przykładowy komunikat (wykaz) zwrotny konsoli:
Compare error at OFFSET <Errorlevel>
plik1 = xx
plik2 = xx
Wiadomości zwrotne comp <ErrorLevel>:
0 = Pliki są identyczne
1 = Pliki się różnią.
2 = Nie można otworzyć pliku do porównania / nie istnieje / niewłaściwa składnia polecenia.
Przykłady stosowania comp
comp /N=5 /A c:\test.txt c:\test2.txt
Comp porówna 5 pierwszych wierszy (/N=5) pliku test.txt do pliku test2.txt, wyniki wyświetli jako zwykłe znaki (/A).
comp /M c:\test\ c:\test2\
Comp porówna zawartość pliki w folderze „test” z plikami w folderze „test2”. Po zakończeniu porównania nie zapyta o porównanie następnych plików (/M).
Dodatkowe informacje
Comp porównuje do czasu wykrycia maksymalnie 10 niezgodności, następnie przerywa porównanie.
Znaczenie opcji /A zmieniło się na przestrzeni lat. Obecnie wyświetla wyniki w zwykłych znakach, wcześniej powodowała wyświetlanie znaków w systemie ASCII*.
Co ciekawe definicja opcji w CMD i Powershell jest również nieaktualna. Jedynie oficjalna strona Microsoft Docs podaje prawidłową definicję (zgodną z rzeczywistym działaniem polecenia).
[!] *System ASCII wyświetla znaki w formie, którą rozumie komputer. Przykładowo cyfra „6” jest wyświetlana jako „53”. Programiści konwertują dane na ASCII w celu szybszego przesyłu danych (ASCII składa się z samych cyfr).
Opcja /M nie była początkowo dostępna, została wprowadzona z czasem.