Как сделать "diff -r" UNIX в Windows Cmd Prompt? - PullRequest
26 голосов
/ 18 июня 2009

Как сравнить две директории в командной строке Windows m / c? Я хочу эквивалент diff -r UNIX.

Ответы [ 9 ]

19 голосов
/ 18 июня 2009

Установите Cygwin , и вы можете использовать diff -r в Windows.

14 голосов
/ 18 июня 2009

Команда comp для Windows - это то, что вы ищете.

Вот пример:

Чтобы сравнить содержимое каталога C: \ Reports с каталогом резервного копирования \\ Sales \ Backup \ April, введите:

comp c:\reports \\sales\backup\april 
8 голосов
/ 18 июня 2009

Самый простой способ - загрузить diff для Windows: http://gnuwin32.sourceforge.net/packages/diffutils.htm
Вы также можете сделать что-то вроде:

dir directory1 > dir1
dir directory2 > dir2
comp dir1 dir2

Кроме того, некоторые версии Windows поставляются с windiff, однако это инструмент с графическим интерфейсом

4 голосов
/ 04 декабря 2012

В Windows есть команда fc. Я думаю, что diff намного лучше, но если вы хотите использовать только то, что поставляется с установкой, ну, вот и все! :)

3 голосов
/ 18 апреля 2012

Вы можете установить Gow и запустить diff в командной строке Windows.

2 голосов
/ 18 июня 2009

Вы можете использовать утилиту windiff, включенную в Windows, начиная с версии NT и выше. Просто запустите «windiff», и появится графический инструмент.

Файл -> Сравнить каталоги

http://msdn.microsoft.com/en-us/library/aa266122(VS.60).aspx

В этой статье описывается, как использовать его из командной строки. Большим преимуществом этого инструмента является то, что он уже включен, и вам не нужно ничего скачивать и устанавливать.

0 голосов
/ 26 октября 2017

В Windows 10 вы можете запустить команду diff в bash, включив Linux Bash Shell

0 голосов
/ 17 декабря 2014

Частичное решение с ROBOCOPY

Частичное решение (и, таким образом, для меня, к сожалению, «нерешение», хотя я изначально возлагал на него большие надежды), которое может быть или не быть достаточным для вас:

Кажется, инструмент ROBOCOPY можно (ab-) использовать для рекурсивного сравнения своего рода бедного человека ; с прискорбным ограничением, что, по-видимому, не сравнивает содержимое файла . Кажется, для сравнения размеры, даты и, необязательно, атрибуты . Волшебное заклинание для этого будет:

ROBOCOPY path1 path2 /e /l /ns /njs /njh /ndl /fp /log:result.txt /it

, где опции , что означает , кажется,

  • /e - рекурсивный, включая пустые каталоги;
  • /l - только печатать журнал, не изменять файлы;
  • /ns /njs /njh - не печатать размеры файлов, сводку заданий, заголовок задания;
  • /ndl - «не регистрировать имена папок»
    • ПРИМЕЧАНИЕ: по сообщениям, это приведет к пропуску пропущенных / лишних пустых папок; если вы не используете это, они должны быть зарегистрированы, но вам придется каким-то образом удалить не отличающиеся каталоги другими способами;
  • /log:result.txt - записать результаты в файл «result.txt»; Я думаю, что это может быть опущено, и результат будет показан на стандартном выходе.

Дополнительные опции:

Предупреждение: НЕ сравнивать содержимое файла

Как я уже сказал выше, это, к сожалению, не для сравнения содержимого файла. Я подтвердил это, выполнив сначала следующую команду:

mkdir d1\a\b d2\a\b & echo x > d1\a\b\f & echo y > d2\a\b\f

В большинстве случаев это должно приводить к файлам d1 \ a \ b \ f и d2 \ a \ b \ f с одинаковыми временными метками, которые можно проверить с помощью dir d1\a\b\f d2\a\b\f. Вызов robocopy для d1 и d2 дал мне пустой набор результатов.

0 голосов
/ 08 июня 2013

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

COMP / a / l D: \ Folder1 \ data.txt D: \ Folder2 \ data.txt

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...