Что такое Windows-эквивалент команды diff?

Я знаю, что есть сообщение, подобное этому:здесь.
Я попытался использовать comp команда, как упоминалось, но если у меня есть два файла, один с данными, такими как "abcd", а другой с данными "abcde", он просто говорит, что файлы имеют разные размеры. Я хотел знать, чем именно они отличаются. В Unix простой diff говорит мне, какая строка и столбец, команда comp в windows работает, если у меня есть что-то вроде "abd" и "abc". Не иначе. Любые идеи, что я могу использовать для это?

13 ответов


запустите это в командной консоли CMD или пакетном файле:

FC file1 file2

FC также может использоваться для сравнения бинарных файлов:

FC /B file1 file2

ну, на Windows я счастливо бегу diff и многие другие инструменты GNU. Вы можете сделать это с помощью cygwin, но я лично предпочитаю GnuWin32 потому что это более легкий процесс установки.

Итак, мой ответ заключается в том, что эквивалент Windows diff - Это !


Winmerge имеет утилита командной строки это, возможно, стоит проверить.

кроме того, вы можете использовать графическую часть тоже в зависимости от того, что вам нужно.


Другой альтернативой является загрузка и установка git из здесь. Затем добавьте путь к Git\bin\ на PATH переменной. Это даст вам не только diff, но и многие другие команды linux, которые вы можете использовать из командной строки windows.

вы можете установить PATH переменная, щелкнув правой кнопкой мыши на компьютере и выбрав Свойства. Затем вы можете нажать на Дополнительные параметры системы в левой части экрана. Во всплывающем окне выберите Переменные среды и затем добавьте или обновите переменную PATH в пользовательских переменных с помощью Git\bin\

git diff документация


fc. fc лучше обрабатывает большие файлы (> 4 Гбайт), чем diff Cygwin.


FC отлично работает в моем случае, это было не полезно, Так как я хотел просто изменить строки. И FC дают дополнительные данные, такие как имя файла, те же строки и двустороннее сравнение.

    >fc data.txt data.txt.bak   
    ***** DATA.TXT
    ####09
    ####09
    ####09
    ***** DATA.TXT.BAK
    ####09
    ####08
    ####09

но в моем случае я хотел только строки, которые изменились, и хотел, чтобы эти строки были экспортированы в другой файл без каких-либо других заголовков или данных.

поэтому я использовал "findstr" для сравнения файла:

findstr /V /G:data.txt.bak data.txt >DiffResult.txt

где :

data.txt.bak это имя старого файла

data.txt - имя нового файла

DiffResult.txt содержит измененные данные i.e только одна строка ### # 09


есть также Powershell (который является частью Windows). Это не быстро, но это гибко, вот основная команда. Люди написали для него различные командлеты и скрипты, если вам нужно лучшее форматирование.

PS C:\Users\Troll> Compare-Object (gc $file1) (gc $file2)

не является частью Windows, но если вы разработчик с Visual Studio, он поставляется с WinDiff (графический)

но мой личный фаворит BeyondCompare, который стоит $30.


DiffUtils вероятно, ваш лучший ставку. Это эквивалент diff для Windows.

насколько мне известно, нет встроенных эквивалентов.


причина, по которой вы получаете ошибку с COMP, заключается в том, что утилита предполагает, что файлы, которые вы сравниваете, имеют одинаковый размер. Чтобы преодолеть это, вы можете использовать е '/n' опция, с которой вы можете указать количество строк, которые вы хотите сравнить. (см. параметры, поддерживаемые comp, введя 'comp /?' в командной строке. таким образом ваша команда будет выглядеть так :

C:\>comp "filepath1" "filepath2" /a /l /n=(the number of lines you want to compare) /c 

это должно решить вашу проблему, если вы хотите придерживаться использования COMP. Но это будет проблемой для действительно больших файлы.

хотя comp это вариант, но я чувствую, что это примитивно и FC это лучший вариант. вы можете использовать FORFILES и FC вместе, чтобы, вероятно, сделать действительно хорошую утилиту filecompare, если вам требуется один на частой основе.

FC используется таким образом для ref:

C:\>fc /c(case insensistive) /lbn(number of errors allowed before you wanna stop compare) /n(display line number) "filename1" "filename2"

есть много вариантов, которые вы можете увидеть по 'fc /?' надеюсь, это поможет


Я нашел легкое графическое программное обеспечение для windows, которое кажется полезным при отсутствии . Это могло бы решить все мои проблемы.

средство windiff http://www.grigsoft.com/download-windiff.htm


Windows, эквивалентная команде diff, является командой fc (File Comapre).

вот основные шаги для этого:
1. Сохраните два файла в папке (пример file1.html и file2.html)
2. Запустить командную строку
3. Введите fc file1Location file2Location

нашли подробный учебник по тому же:

http://www.howtogeek.com/206123/how-to-use-fc-file-compare-from-the-windows-command-prompt/


Я не знаю, является ли следующий инструмент exatly, что вам нужно. Но мне нравится использовать для определенных файлов какой-то онлайн-инструмент. Таким образом, я могу использовать его независимо от операционной системы. Вот пример: diffchecker.com

но для моих нужд, я думаю, лучший инструмент для отслеживания изменений и журналов файлов моего проекта-GIT. Если вы работаете в команде, вы можете иметь некоторое РЕПО онлайн на своем сервере или использовать его с Bitbucket или Github.

надеюсь, это кому-то поможет.


Если вы установили git на свой компьютер, вы можете открыть терминал git и просто использовать Linux как обычно.