Команда FC сравнение файлов с расширенным сервисом

Команда FC впервые появилась в системе MS-DOS версии 2.0. Название команды образовано первыми буквами английских слов File Comparison (сравнение файлов).

НАЗНАЧЕНИЕ. FC предоставляет набор сервисных средств для верификации - есть возможность изменить алгоритм сравнения файлов и форму представления результатов. По сравнению с командой СОМР FC распознает более сложные (с точки зрения машинного анализа) различия файлов, связанные с рассовмещениями, вызванными отсутствием или наличием дополнительных символов в одном из файлов.
Так, например, если в одном из сравниваемых файлов отсутствует вторая строка, то СОМР будет квалифицировать все последующие строки как несовпадения. FC же в этом случае распознает только одно несовпадение, непосредственно вызванное отсутствием второй строки в одном из файлов.

ОПИСАНИЕ. В отличие от команды СОМР при вводе команды FC диалоговая форма задания параметров не предусмотрена (это связано с наличием большого количества ключей).
Программа, реализующая команду FC, различает два типа файлов - двоичные и символьные. Если не заданы ключи описания типа файла, то по умолчанию файлы с расширением .BIN, .COM, .SYS, .EXE, .OBJ и .LIB интерпретируются как двоичные. Файлы всех других типов считаются символьными. Для двоичного и символьного типов файлов реализованы различные алгоритмы сравнения.
Принципиальное различие команд СОМР и FC - алгоритм сравнения символьных файлов. В то время как СОМР сравнивает содержимое соответствующих байт обоих файлов, имеющих одинаковое смещение относительно начала файла, FC производит динамическое автосовмещение строк символьных файлов. При обнаружении расхождений между символьными строками программа проверяет, не вызвано ли оно рассовме- щением файлов. Для этого текущая строка первого файла последовательно сравнивается со всеми строками второго файла, находящимися в буфере оперативной памяти программы FC. В качестве текущей строки второго файла выбирается та, при сравнении с которой количество несовпадений текущей строки первого файла было минимальным. Рассовмещение считается скомпенсированным, если количество строк с минимумом несовпадений, следующих подряд, стало равным параметру, введенному по ключу /nnnn (по умолчанию это количество равно двум).

Текстовые файлы сравниваются построчно. Сообщения о несовпадениях, обнаруженных при построчном (символьном) сравнении файлов, имеют следующую структуру:
***** имя первого из сравниваемых файлов Текст последней совпадающей строки Текст несовпадающих строк
Текст первой совпадающей строки, если такая была найдена ***** имя второго из сравниваемых файлов Текст последней совпадающей строки Текст несовпадающих строк
Текст первой совпадающей строки, если такая была найдена Пустая строка.
Если после регистрации несовпадения программе FC не удается найти одинаковые строки в сравниваемых файлах, выводится сообщение
Resynch failed. Files are too different (Синхронизация не восстановлена. Файлы различны).
Двоичные файлы сравниваются побайтно. При обнаружении несовпадений FC не предпринимает никаких попыток совмещения файлов. Каждая пара байтов сравнивается жестко позиционно. Если содержимое байтов с одинаковым смещением относительно начала файла не совпадает, оно выводится на экран (или на переадресованное устройство). В режиме побайтного сравнения файлов FC предварительно сравнивает размеры файлов и в случае их несовпадения выводит сообщение
fc: filename longer than filename
{"имя файла" длиннее, чем "имя файла").
После вывода этого сообщения файлы не сравниваются.
Сообщения о несовпадениях, обнаруженных при побайтном (двоичном) сравнении файлов, имеют структуру
nnnnnn хх уу
Здесь nnnnnn - смещение байта относительно начала фай- та, а хх и уу - содержимое байтов первого и второго файлов соответственно. Все числа выводятся в шестнадцатеричном визе. Смещения байтов отсчитываются начиная с нуля.
Информация о несовпадениях может быть отображена на тюбое устройство вывода (например, в файл на магнитном дис- <е). Выбор этого устройства осуществляется с помощью симво- тов переадресации, задаваемых в конце командной строки шесте с именем устройства, на которое переадресуется ввод-вывод.

Команда FC внешняя, выполняется программой, загру- ючный модуль которой содержится в файле FC.EXE.

ФОРМАТ.

Формат 1 (для сравнения символьных файлов) й.маршрут] FC 1/А] [/С] [/L] [/Lb п] [/N1 l/Tl [/Wl l/nnnn] спец. 1 спец. 2

Формат 2 (для сравнения двоичных файлов) [&.иаршрут]FC I/В) |/пппп) 1 спец.2
Спецификация d.маршрут - каталог, содержащий файл загрузочного модуля программы FC.
Спец. 1 и спец.2 - спецификации сравниваемых файлов, состоящие из имени диска, маршрута, а также имени и расширения имени файла. Шаблоны "*" и "?" разрешены. Если имена сравниваемых файлов совпадают, в качестве спец.2 задается только имя диска и маршрут.
Ключ /А - сокращение объема выводимой информации о несовпадениях в режиме сравнения символьных файлов. В этом случае вместо несовпадающих участков файлов выводятся их первые и последние строки. Внутренние строки этих участков текста обозначаются многоточием.
Ключ /В - режим побайтного сравнения двоичных файлов. Несовпадения выводятся побайтно парами с указанием смещения относительно начала файла. Ключ /В действует по умолчанию для файлов типа EXE, COM, BIN, SYS, OBJ и LIB.
Ключ /С режим, в котором игнорируются несовпадения, обусловленные наличием букв, набранных на различных регистрах клавиатуры. FC интерпретирует все буквы в обоих файлах как набранные на верхнем регистре.
Ключ /L - построчное сравнение файлов в режиме символов ASCII. Он действует по умолчанию, если сравниваются файлы с расширениями, отличными от .EXE, .COM, .SYS, .OBJ, .LIB или .BIN.
Ключ /Lbn - размер внутреннего буфера строк, равный п строкам (по умолчанию он равен 100 строкам). Для файлов, число последовательных несовпадающих строк которых по размеру больше размера буфера, сравнение прерывается. Увеличением размера буфера можно расширить зону автоматического совмещения файлов при построчном сравнении символьных файлов, так как поиск аналогичных строк при автосовмещении ведется только в оперативной памяти.
Ключ /N выводит на экран дисплея номера строк при построчном символьном сравнении файлов.
Ключ /Т запрещает замену символов горизонтальной табуляции пробелами. Если ключ не задан, то каждый знак горизонтальной табуляции заменяется пробелами в количестве, необходимом для синхронизации начала последующего текста по позиции, кратной восьми.
Ключ /W используется при построчном символьном сравнении файлов, что приводит к сжатию символьных полей, состоящих из знаков пробела и табуляции, во внутреннем буфере FC, расположенном в оперативной памяти. Вместо всего поля оставляется только один пробел. Таким образом, содержимое файлов после выполнения команды остается неизменным.
Ключ / nmm специфицирует численное значение критерия совмещения сравниваемых файлов (количество строк, которые должны совпасть после регистрации различий в файлах, чтобы FC считала совмещение восстановленным).

Пример 80. С:\>fc g3.k22 g3.bak/n
сообщения о несовпадениях
Resynch failed. Files are too different. Сообщение о несовпадении.

Пример 81. C:\>fc g3.k22 g3.k22 fc: no differences encountered.

Пример 82.
C:\>fc a.bak a.bat>prn:
***** a.bak echo off ver
path c:\;cAudos;c:\teach ***** a.bat echo off
path c:\;c:\udos;c:\teach *****
***** a.bak ***** a.bat
ver
***** C:\>COMP a.bak a.bat>prn:
C:A.BAK and C:A.BAT
Compare error at OFFSET A File 1 - 76
File 2-70
Compare error at OFFSET В File 1 = 65
File 2-61
Compare error at OFFSET С File 1 - 72
File 2-74
Compare error at OFFSET D File 1 - OD
File 2-68
Compare error at OFFSET E File 1 - OA
File 2-20
Compare error at OFFSET F File 1 - 70
File 2-63
Compare error at OFFSET 10 File 1 - 61
File 2 - ЗА
Compare error at OFFSET 11 File 1 - 74
File 2 - 5C
Compare error at OFFSET 12 File 1 - 68
File 2 - 3B
Compare error at OFFSET 13 File 1 - 20
File 2-63
10 Mismatches - ending compare Compare more files (Y/N)?
Замечания к примерам. В примере 80 показано сравнение двух символьных файлов, в процессе которого произошла их рассинхронизация. Попытки восстановления синхронизации оказались неудачными, и система выдала сообщение
"Синхронизация не восстановлена. Файлы различны".
В примере 81 с помощью команды FC осуществляется проверка файлов на корректность считывания информации с диска. Такой процедурой удобно проводить быструю комплексную экспресс-проверку аппаратуры компьютера и качества магнитного носителя данных.


Пример 82 иллюстрирует различия алгоритмов сравнения символьных файлов при использовании команд СОМР и FC. В примере приводятся протоколы сравнения пакетных файлов a.bat и a.bak (тексты см. ниже). Протокол сравнения файлов с помощью команды FC показывает, в частности, как восстановленная синхронизация файлов при сравнении позволяет избежать вывода "ложных" несовпадений, затрудняющих анализ.
Файл a.bat: echo off
path c:\;c:\udos;c:\teach
alfa ergha
prompt $p$g
hdp-910
cd pcc\t2\k2_2
ver
Файл a.bak:
echo off ver
path c:\;c:\udos;c:\teach alfa ergha prompt $p$g hdp-910 cd pcc\t2\k2_2


Обсудить вопрос в студенческом форуме

 

Сайт содержит информацию о учебном заведении и студенческой общине и не является официальным