Команда COMP побайтово сравнивает содержимое двух файлов или групп файлов и сообщает о позициях, где данные различаются. Это встроенный инструмент CMD для быстрой проверки целостности файлов без сторонних программ.
- Синтаксис команды COMP
- Ключи и параметры
- Примеры использования
- Простое сравнение двух текстовых файлов
- Сравнение двух бинарных файлов
- Сравнение с выводом в десятичном формате
- Сравнение первых N строк лог-файла
- Сравнение группы файлов по маске
- Сравнение без учёта регистра
- Частые ошибки и решения
- Когда применять, а когда нет
- FAQ
- В чём разница между COMP и FC?
- Как сравнить два каталога командой COMP?
- COMP показывает «слишком много различий» и останавливается — что делать?
- Можно ли использовать COMP в скрипте для автоматической проверки?
- Нужны ли права администратора для COMP?
- COMP работает с файлами в кодировке UTF-8?
Синтаксис команды COMP
COMP [данные1] [данные2] [/D] [/A] [/L] [/N=число] [/C] [/OFF[LINE]]
данные1— путь к первому файлу (или маска, например*.txt)данные2— путь ко второму файлу или каталогу для сравнения
Если аргументы не заданы, COMP запросит их в интерактивном режиме.
Ключи и параметры
| Ключ | Описание | Пример |
|---|---|---|
/D | Выводить различия в десятичном формате (по умолчанию — шестнадцатеричный) | COMP /D file1.bin file2.bin |
/A | Выводить различия в виде символов ASCII вместо числовых кодов | COMP /A file1.txt file2.txt |
/L | Выводить номер строки вместо смещения в байтах | COMP /L file1.txt file2.txt |
/N=число | Сравнить только первые N строк файла | COMP /N=100 file1.log file2.log |
/C | Сравнивать без учёта регистра символов | COMP /C file1.txt file2.txt |
/OFF[LINE] | Не пропускать файлы с атрибутом «вне сети» (offline) | COMP /OFFLINE file1 file2 |
/? | Вывод встроенной справки | COMP /? |
Примеры использования
Простое сравнение двух текстовых файлов
Самый частый сценарий: убедиться, что два конфигурационных файла идентичны или найти первое место расхождения.
COMP C:\configs\old.cfg C:\configs\new.cfg /A /L
Ключ /A покажет символы ASCII, /L — номера строк. Если файлы идентичны, COMP выведет «Файлы сравнены и совпадают».
Сравнение двух бинарных файлов
Используется для проверки, не повреждён ли файл при копировании или передаче по сети.
COMP C:\backup\image.iso D:\check\image.iso
COMP сообщит о первых 10 различиях с указанием смещения в байтах (шестнадцатеричные значения). Если различий нет — файлы идентичны.
Сравнение с выводом в десятичном формате
Удобнее для чтения, когда нужно сообщить коллеге позицию различия без перевода из hex.
COMP /D report_v1.docx report_v2.docx
Позиции различий будут выведены как десятичные числа.
Сравнение первых N строк лог-файла
Если файл огромный, а вас интересует только начало — ограничьте сравнение.
COMP /N=200 /L C:\logs\app.log D:\archive\app.log
COMP сравнит только первые 200 строк и выведет номера строк с расхождениями.
Сравнение группы файлов по маске
Позволяет одной командой проверить все файлы одного каталога относительно другого.
COMP C:\release\*.dll D:\test\*.dll
COMP последовательно сравнит каждую пару файлов с одинаковыми именами из двух каталогов.
Сравнение без учёта регистра
Полезно при сравнении текстовых файлов, где важно только содержимое, а не форматирование букв.
COMP /C /A file_upper.txt file_lower.txt
Символы в верхнем и нижнем регистре будут считаться одинаковыми.
Частые ошибки и решения
| Ошибка / симптом | Причина | Решение |
|---|---|---|
| «Файлы имеют различный размер» | COMP не сравнивает файлы разного размера по умолчанию | Используйте FC вместо COMP — он умеет сравнивать файлы разного размера |
| «Слишком много различий» и сравнение прерывается | COMP останавливается после 10 обнаруженных различий | Это ограничение команды; для детального сравнения используйте FC /B или сторонние утилиты |
| COMP запрашивает ввод, хотя аргументы указаны | Путь содержит пробелы и не взят в кавычки | Оберните пути в двойные кавычки: COMP "C:\My Files\a.txt" "D:\My Files\b.txt" |
Ключ /A не используется и нечитаемый вывод в hex | По умолчанию COMP выводит шестнадцатеричные коды | Добавьте /A для вывода ASCII или /D для десятичных чисел |
| «Не удаётся открыть файл» | Файл заблокирован другим процессом или нет прав на чтение | Закройте программу, использующую файл, или запустите CMD с правами администратора |
Когда применять, а когда нет
Команда COMP хорошо подходит для проверки целостности бинарных файлов (образы, архивы, exe) и быстрой проверки пар текстовых файлов одинакового размера. Она не требует прав администратора и работает во всех версиях Windows.
Не используйте COMP, если файлы заведомо разного размера — команда откажет сразу. В этом случае применяйте FC (File Compare), которая умеет сравнивать файлы разного размера и выводит конкретные отличающиеся строки. Для сложного diff-анализа текстовых файлов удобнее PowerShell: Compare-Object (Get-Content a.txt) (Get-Content b.txt).
FAQ
В чём разница между COMP и FC?
COMP сравнивает побайтово и останавливается после 10 различий; FC умеет сравнивать файлы разного размера, показывает строки целиком и поддерживает режим построчного сравнения (/L) и бинарный режим (/B). Для текстовых файлов FC обычно информативнее.
Как сравнить два каталога командой COMP?
COMP сравнивает именно файлы, а не каталоги целиком. Используйте маску: COMP C:\dir1\* D:\dir2\* — это сравнит файлы с одинаковыми именами из двух папок.
COMP показывает «слишком много различий» и останавливается — что делать?
Это встроенное ограничение: COMP прекращает сравнение после 10 найденных различий. Переходите на FC /B для бинарных или FC /L для текстовых файлов — они не имеют такого ограничения.
Можно ли использовать COMP в скрипте для автоматической проверки?
Да. Проверяйте ERRORLEVEL: 0 — файлы идентичны, 1 — есть различия, 2 — ошибка открытия файлов. Пример: COMP a.bin b.bin >nul && echo OK || echo DIFFERENT.
Нужны ли права администратора для COMP?
Нет, если у текущего пользователя есть право на чтение сравниваемых файлов. Права администратора нужны только для чтения защищённых системных файлов.
COMP работает с файлами в кодировке UTF-8?
COMP работает на уровне байтов и не знает о кодировках. Он сравнит байты, а не символы. Если файлы в разных кодировках, используйте FC с ключом /U для сравнения в Unicode.


