Команда FC позволяет сравнить содержимое двух или нескольких файлов.
1. Описание команды FC.
1.1. Формат командной строки:
C:\ FC [/A] [/C] [/L] [/LBn] [/N] [/OFF[LINE]] [/T] [/U] [/W] [/nnnn][диск1:][путь1]имя_файла1 [диск2:][путь2]имя_файла2
или
FC /B [диск1:][путь1]имя_файла1 [диск2:][путь2]имя_файла2
1.2. Параметры:
- /A — Вывод только первой и последней строк для каждой группы различий.
- /B — Сравнение двоичных файлов.
- /C — Сравнение без учета регистра символов.
- /L — Сравнение файлов в формате ASCII.
- /Lbn — Максимальное число несоответствий для заданного числа строк.
- /N — Вывод номеров строк при сравнении текстовых файлов ASCII.
- /OFF[LINE] — Не пропускать файлы с установленным атрибутом «Автономный».
- /T — Символы табуляции не заменяются эквивалентным числом пробелов.
- /U — Сравнение файлов в формате UNICODE.
- /W — Пропуск пробелов и символов табуляции при сравнении.
- /nnnn — Число последовательных совпадающих строк, которое должно встретиться после группы несовпадающих.
- [диск1:][путь1]имя_файла1 — Указывает первый файл или набор файлов для сравнения.
- [диск2:][путь2]имя_файла2 — Указывает второй файл или набор файлов для сравнения.
Для получения краткой справки используется параметр /?:
C:\ FC /?
Если в командной строке не задан параметр /B то сравнение выполняется построчно, с выводом результатов в виде имен файлов и несовпадающих строк:
Сравнение файлов FILE1.TXT и FILE2.TXT ***** FILE1.TXTline line1 line2 head ***** FILE2.TXT строка1 строка2 head *****
В приведенном примере не совпало содержимое первых 2-х строк в файлах FILE1.TXT и FILE2.TXT. Кроме не совпавших строк, в результатах сравнения отображается первая совпавшая после них строка ( head )
Если выполняется команда сравнения двоичных файлов
C:\ FC /B
то независимо от формата данных, выполняется побайтное сравнение с выдачей результатов в виде:
Сравнение файлов file1.txt и file2.txt
00000001: 6C 31
00000002: 69 44
Строка 00000001: 6C 31 — означает, что смещение от начала файла равно 00000001 . В файле file1.txt поданному смещению находится байт с шестнадцатеричным значением 6C, а в файле file2.txt — 31
2. Примеры использования FC.
2.1. Сравнить двоичный файл etalon.exe из текущего каталога с файлом C:\windows\system32\notepad.exe:
C:\ fc /b etalon.exe C:\windows\system32\notepad.exe
2.2. Сравнить группы двоичных файлов с расширением exe из каталога D:\windows\system32\dllcache\ с файлами из каталога D:\windows\system32\:
C:\ fc /b D:\windows\system32\dllcache\*.exe D:\windows\system32\*.* | more
Благодаря использованию команды FC в цепочке с командой more, выдача результатов на экран выполняется в постраничном режиме.
2.3. сравнить текстовые файлы в разных каталогах с записью результатов в файл C:\compare.txt:
C:\ fc C:\Documents\*.txt D:\documents\*.* > C:\compare.txt
2.4. Как и в предыдущем случае, но в результатах сравнения будут отображаться не более 2-х несовпадений:
C:\ fc /LB2 C:\Documents\*.txt D:\documents\*.* > C:\compare.txt
2.5. Параметр /nnn позволяет управлять продолжением выполнения сравнения файлов. Например, имеется 2 текстовых файла file1.txt и file2.txt, в которых 1-я и 4-я строки различаются, а 2-я и 3-я — совпадают. В зависимости от значения /nnn утилита FC.EXE может либо прекратить дальнейшее сравнение файлов, либо продолжить. После первой не совпавшей строки имеются 2 совпавшие ( 2-я и 3-я строки — одинаковые) — сравнение файлов будет продолжено:
C:\ fc /2 file1.txt file2.txt
2.6. Параметр /3 требует наличия 3- х совпадающих строк после несовпадения, поэтому дальнейшее сравнение файлов будет прекращено:
C:\ fc /3 file1.txt file2.txt
2.7. Выполнить сравнение текстовых файлов в формате ASCII , без учета регистра символов, с отображением только первой и последней строк для каждой группы различий:
C:\ fc /A /L /C file1.txt file2.txt
2.8. В командных файлах, для проверки результата сравнения файлов используется анализ значения переменной ERRORLEVEL.
По результату выполнения операции сравнения, переменная ERRORLEVEL может принимать следующие значения:
- 0 — файлы совпали.
- 1 — файлы не совпали
- 2 — ошибка открытия файла ( файл не найден)
Пример командного файла :
@echo off fc file1.txt file2.txt > nul if ERRORLEVEL 1 goto Different echo Файлы совпадают REM подпрограмма, выполняющаяся при совпадении файлов. . . exit :Different echo Файлы НЕ совпадают REM подпрограмма, выполняющаяся при различии файлов. . .