• Компхутерная БЕЗАПАСНАТЪ ! 5months ago

    Сравнение двух текстовых файлов при помощи командной строки
    Бывают случаи, когда у пользователей возникает необходимость проверить два файла на идентичность. Чаще всего с подобной задачей сталкиваются начинающие веб-разработчики и программисты. Отыскивать несоответствия в одинаковых с виду файлах приходится редакторам, корректорам и прочим специалистам, работающим с текстовыми данными.
    По идее для этих целей лучше всего использовать специальные утилиты, например WinMerge, но файлы также можно сравнивать с помощью самой обыкновенной командной строки. В командной оболочке всех версий Windows имеется замечательная команда FC. Она позволяет сравнивать между собой любые файлы, причём как текстовые, так и бинарные. Синтаксис этой команды очень прост и выглядит он следующим образом:
    FC /ключ [полный путь к первому файлу] [полный путь ко второму файлу]
    Список доступных ключей можно просмотреть, набрав и выполнив в консоли CMD команду FC /?. Справка даётся на русском языке, так что вы без труда разберетесь, что к чему.
    А теперь немного практики. Допустим, у вас есть два файла с кодом PHP и в одном из них предположительно имеются некие различия. Скрипты PHP это обычные текстовые файлы, поэтому в данном случае будем использовать ключ L предназначенный для сравнения текстовых документов в кодировке ASCII. Если скрипт содержит кириллицу, не забудьте перед выполнением команды сравнения выставить в консоли кодировку 1251, иначе на выходе вы получите крякозябры. Смена кодировки выполняется командой chcp 1251.
    Затем сравниваем файлы:
    FC /L D:/1.php D:/2.php
    Различия между файлами выводятся в следующем порядке. Сначала идёт имя первого файла, затем строка, в которой было найдено несовпадение. За ним идёт имя второго файла и точно также указывается различающаяся строка. Если программа находит ещё несколько несоответствий в других строках, всё повторяется. В общей сложности утилита может обнаружить до 100 различий, такое ограничение имеет используемый командой fc внутренний буфер.
    При поиске несоответствий в бинарных файлах используется ключ B. При этом сравнение производится побайтово. В принципе, таким способом можно сравнивать любые файлы, ведь все они по сути двоичны, просто при работе с текстовыми форматами FC может ограничиться информацией какой из сравниваемых объектов длиннее и на этом завершить свою работу.
    FC /B D:/1.exe D:/2.exe
    В данном примере сравниваются два исполняемых файла. Результат такого сравнения будет выглядеть примерно следующим образом:
    00000040: 56 BA
    00000050: 65 68
    00000060: 43 72
    00000070: 6U 0A
    Если вы раньше никогда не имели дела с шестнадцатеричными редакторами, разобраться со всем этим нагромождением символов будет непросто. В общем так, каждая выведенная в консоли строка это найденное различие. Символы до двоеточия указывают на смещение от начала файла, первое двухзначное число это соответствующий смещению байт в первом файле, второе двухзначное число — соответствующий смещению байт во втором файле.
    Какими ещё полезными возможностями обладает команда FC? Ну, например поддержкой подстановочных знаков. Если вам нужно сравнить некий файл etalon.exe с другими исполняемыми файлами в текущем каталоге, используйте команду следующего формата:
    fc *.exe etalon.exe
    Также с помощью подстановочных знаков можно производить пакетное сравнение файлов, расположенных в разных каталогах или разделах жёсткого диска. А что будет, если сравниваемые файлы окажутся полностью идентичными? Утилита выведет лаконичное сообщение — FC:различия не найдены.

    post-img

    Leave a comment can only registered users.