FC — сравнение файлов в командной строке: синтаксис и примеры

FC — CMD-команда для побайтового и построчного сравнения двух файлов. Показывает точные различия без сторонних программ прямо в терминале.

Команда FC (File Compare) сравнивает содержимое двух файлов и показывает строки или байты, в которых они отличаются. Это стандартный инструмент CMD без зависимостей — удобно для быстрой проверки конфигов, лог-файлов и скриптов, когда сторонний diff-инструмент под рукой недоступен.

Синтаксис команды FC

FC [ключи] файл1 файл2

Плейсхолдеры:

  • файл1, файл2 — полные или относительные пути к сравниваемым файлам. Поддерживаются маски (*, ?) для пакетного сравнения.

Ключи и параметры

Ключ Описание Пример
/A Сокращённый вывод: показывает только первую и последнюю строки каждого блока различий FC /A old.txt new.txt
/B Двоичное (побайтовое) сравнение. Подходит для EXE, DLL, изображений FC /B file1.exe file2.exe
/C Игнорировать регистр символов при сравнении текстовых файлов FC /C config1.ini config2.ini
/L Построчное сравнение в ASCII-режиме (по умолчанию для текстовых файлов) FC /L a.txt b.txt
/LBn Ограничить буфер построчного сравнения n строками (по умолчанию 100) FC /LB500 huge1.log huge2.log
/N Отображать номера строк при построчном сравнении FC /N script1.bat script2.bat
/T Не преобразовывать табуляции в пробелы FC /T file1.py file2.py
/U Сравнивать файлы как Unicode (UTF-16) FC /U doc1.txt doc2.txt
/W Игнорировать пробелы и табуляции при сравнении FC /W source1.c source2.c

Примеры использования

Базовое сравнение двух текстовых файлов

Самый простой вариант: проверить, идентичны ли два файла.

FC C:\reports\report_old.txt C:\reports\report_new.txt

Если файлы одинаковы, будет выведено «FC: различий не найдено». Если есть отличия — команда покажет блоки расходящихся строк с контекстом.

Сравнение с игнорированием регистра

Удобно при сравнении конфигурационных файлов, где регистр ключей не важен.

FC /C C:\config\old.ini C:\config\new.ini

Строки «Value=YES» и «value=yes» будут считаться идентичными.

Побайтовое сравнение бинарных файлов

Позволяет проверить, изменился ли исполняемый файл или образ.

FC /B C:\backup\app.exe C:\current\app.exe

Команда выведет смещения (offset) и значения байтов, которые отличаются. Если файлы идентичны — «FC: различий не найдено».

Сравнение с выводом номеров строк

При разборе скриптов и логов номер строки сразу указывает, где искать изменение.

FC /N C:\scripts\deploy_v1.bat C:\scripts\deploy_v2.bat

Перед каждой расходящейся строкой будет выведен её номер.

Сравнение с ограничением буфера для больших файлов

По умолчанию FC буферизует 100 строк. Для файлов с большими блоками изменений это значение нужно увеличить.

FC /LB1000 C:\logs\server_old.log C:\logs\server_new.log

Буфер увеличен до 1000 строк — FC не потеряет контекст при сравнении крупных блоков.

Сравнение файлов Unicode

Если файлы сохранены в UTF-16 (стандарт для ряда системных файлов Windows), нужен ключ /U.

FC /U C:\old\strings.txt C:\new\strings.txt

Без этого ключа двухбайтовые символы могут читаться некорректно и давать ложные различия.

Частые ошибки и решения

Ошибка / симптом Причина Решение
«FC: не удаётся открыть файл» — команда завершается без результата Неверный путь или файл не существует Проверьте путь через DIR путь_к_файлу; используйте полные пути в кавычках, если в имени есть пробелы
Кодовые страницы отображаются как каша при кириллице CMD использует кодовую страницу 866, файлы в UTF-8 Переключите страницу перед запуском: CHCP 65001, затем выполните FC
«FC: буфер переполнен» — сравнение прерывается Блок отличий превышает буфер (100 строк по умолчанию) Увеличьте буфер: FC /LB500 или FC /LB2000
FC показывает различия, хотя файлы визуально одинаковы Разные окончания строк (CRLF vs LF) или BOM Для текста используйте FC /W чтобы игнорировать пробельные символы; или конвертируйте файлы в одинаковую кодировку
Код возврата всегда 0, хотя файлы разные Оценка кода возврата в скрипте ведётся неверно FC возвращает 0 — файлы идентичны, 1 — есть различия, 2 — ошибка. Проверяйте %ERRORLEVEL% после команды

Когда применять, а когда нет

Команда FC подходит для быстрого diff-анализа прямо в терминале, особенно в среде без GUI. Удобна в BAT/CMD-скриптах для автоматической проверки результатов: ненулевой %ERRORLEVEL% сигнализирует о расхождении. Для сложного diff с цветовым выделением, трёхстороннего сравнения или работы с большими бинарными образами FC недостаточно — используйте WinMerge или git diff. Аналог в PowerShell — Compare-Object (Get-Content f1.txt) (Get-Content f2.txt), который даёт более гибкую фильтрацию вывода.

FAQ

Как использовать FC в скрипте для автоматической проверки?

После вызова FC проверяйте %ERRORLEVEL%: 0 — файлы идентичны, 1 — есть различия, 2 — ошибка выполнения. Пример: FC file1.txt file2.txt > NUL && ECHO Идентичны || ECHO Различаются.

FC умеет сравнивать больше двух файлов сразу?

Нет, FC сравнивает строго два файла за один вызов. Для пакетного сравнения используйте цикл FOR в скрипте.

Чем FC отличается от COMP?

COMP работает только в побайтовом режиме и не показывает строки с различиями. FC умеет и побайтовое (/B), и построчное сравнение, и выводит контекст изменений — он более информативен.

Как перенаправить вывод FC в файл?

Стандартным перенаправлением: FC file1.txt file2.txt > diff.txt. Если нужно только проверить наличие различий без вывода — FC file1.txt file2.txt > NUL.

Работает ли FC с файлами в разных кодировках?

FC не конвертирует кодировки автоматически. Если файлы в разных кодировках, результат будет некорректным. Перед сравнением приведите файлы к одной кодировке или используйте PowerShell с явным указанием -Encoding.

Оцените статью
( Пока оценок нет )
MW10
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.