Вернуться   Компьютерный форум > Блоги > Базаров
Оценить эту запись

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

Запись от Базаров размещена 27.02.2014 в 16:51

Иногда требуется сравнить файлы для проверки их идентичности или нахождения различий. Для сравнения файлов в составе DOS имеется программа FC.
Формат команды
fc [параметры] имя-файла имя-файла [>имя-файла-протокола]
В именах сравниваемых файлов можно употреблять символы * и ?. Если имя файла протокола не задано, то сведения о различиях сравниваемых файлов выводятся на экран.
Построчное и побайтовое сравнение
Сравнение файлов программой FC может производиться двумя способами.
  1. Сравнение текстовых файлов, или построчное сравнение. При этом способе, если программа FC обнаруживает различие в файлах, она пытается найти после точки рассогласования такие места в этих файлах, начиная с которых они вновь становятся одинаковыми. На выход программа FC выдает различающиеся строки файлов.
  2. Сравнение других (двоичных) файлов, или побайтовое сравнение. При этом способе программа FC после обнаружения различия файлов не делает никаких попыток найти в файлах найти в файлах место, начиная с которого файлы снова становятся одинаковыми. На выход программа FC выдает различающиеся байты в файлах.
Для задания режима сравнения вы можете указать один из следующих параметров:
/L - режим построчного сравнения файлов;
/B - режим побайтового сравнения файлов.
По умолчанию, если пользователь не указал режим сравнения файлов (то есть параметр /L или /B), то режим сравнения выбирается по расширению имени первого из сравниваемых файлов. Если это расширение - .EXE, .COM, .SYS, .OBJ, .LIB или .BIN, используется побайтовый способ сравнения, иначе - построчный способ сравнения.
Параметры при построчном сравнении файлов
В построчном режиме сравнения можно задать дополнительные параметры:
/C - при сравнении игнорируется различие между прописными и строчными буквами;
/N - вывод номеров строк при построчном сравнении файлов;
/T - знаки табуляции не рассматриваются как пробелы. Если этот режим не указан, то при построчном сравнении файлов каждый знак табуляции рассматривается как число пробелов, большее нуля, которое необходимо для того, чтобы следующий текст начинался с позиции, номер которой кратен восьми;
/W - подряд идущие пробелы и знаки табуляции рассматриваются как один пробел, а пробелы и знаки табуляции в начале и в конце строк при сравнении игнорируются;
- сокращенная форма точета о результатах сравнеия файлов: вместо выдачи различающихся кусков текста полностью выводится только первые и последние их строки, промежуточные строки обозначаются многоточием;
/Lbчисло - установка размера внутреннего буфера для нахождения соответствий в текстовых файлах после их рассогласования. По умолчанию размер буфера - 100 строк;
/число - устанавливает, сколько строк файлов подряд должно совпадать для того, чтобы файлы считались снова согласованными. По умолчанию этот параметр равен 2.
Примеры
fc a:*.* *.* /Lb200 /4 - сравнение всех файлов из текущего каталога диска А: с одноименными файлами из текущего каталога. Размер внутреннего буфера программы FC - 200 строк. Файлы будут считаться согласованными, если совпадают подряд 4 строки;
fc doclad.doc doclad1.doc > diff - сравнение файлов doclad.doc и doclad1.doc. Отчет о различиях помещается в файл diff.
Результаты побайтового сравнения
При побайтовом сравнении файлов отчет о различиях файлов состоит из строк вида nnnnnn xx yy, где nnnnnn - относительный номер байта вфайлах (нумерация начинается с нуля); хх - байт первого файла; уу - байт второго файла (в шестнадцатеричном виде).
Если один из сравниваемых файлов длиннее другого, то в конце выдается сообщение
FC: имя-файла longer then имя-файла
(FC: имя-файла длиннее, чем имя-файла)
Результаты построчного сравнения
При построчном сравнении файлов сведения о различиях файлов выводятся в следующем виде:
***** имя-первого-файла
Последняя совпадающая строка первого и второго файлов.
Строки первого файла, которых нет во втором файле.
Следующая совпадающая строка первого и второго файлов.
***** имя-второго-файла
Последняя совпадающая строка первого и второго файлов.
Строки второго файла, которых нет в первом файле.
Следующая совпадающая строка первого и второго файлов.
Пустая строка.
Если после обнаружения различий программа FC не может снова найти совпадающих строк в файлах, то выводится сообщение
Resynch failed. Files are too different
(Ресинхронизация не удалась: файлы слишком различны)
Если вы не удовлетворены этим сообщением, то можете попробовать увеличить значение параметра /Lb для того, чтобы программа FC могла более успешно находить соответствия в файлах.
Если файлы полностью совпадают, то программа FC выводит сообщение
FC: no differences encounted
(FC: различий не найдено)
Замечания. 1. Для сравнения в режиме /С файлов, содержащих русские буквы, необходима правильная установка параметров страны в файле CONFIG.SYS. Так, если файл COUNTRY.SYS находится в каталоге C:\EXE\MSDOS, то в файле CONFIG.SYS должна быть строка country = 007, 866, C:\EXE\MSDOS\COUNTRY.SYS.
2. В пакет программ Norton Desktop for Windows входит более мощная и удобная программа сравнения файлов.
Размещено в Без категории
Просмотров 1607 Комментарии 0 Отправить другу ссылку на эту запись
Всего комментариев 0

Комментарии

 

Текущее время: 03:24. Часовой пояс GMT +4. Powered by vBulletin® Version 5.8.9
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.