Как сравнить два каталога в командной строке cmd из Windows m/c? Я хочу эквивалент diff -r UNIX.
Как сделать "diff -r" UNIX в Windows Cmd Prompt?
Ответ 1
Установите Cygwin, и вы можете использовать diff -r
в Windows.
Ответ 2
Команда comp для Windows - это то, что вы ищете.
Вот пример:
Чтобы сравнить содержимое каталога C:\Reports с резервным каталогом \\Sales\Backup\April, введите:
comp c:\reports \\sales\backup\april
Ответ 3
Самый простой способ, вероятно, будет загружать diff для Windows: http://gnuwin32.sourceforge.net/packages/diffutils.htm
Вы также можете сделать что-то вроде:
dir directory1 > dir1
dir directory2 > dir2
comp dir1 dir2
Кроме того, некоторые версии Windows поставляются с windiff
, однако это инструмент графического интерфейса
Ответ 4
В Windows есть команда fc
. Я думаю, что diff
лучше, но если вы хотите использовать только то, что пришло с установкой, ну, вот и вы!:)
Ответ 5
Вы можете установить Gow, и вы можете запустить diff в командной строке Windows.
Ответ 6
Вы можете использовать утилиту windiff, включенную в Windows с версии NT и выше. Просто запустите "windiff", и появится графический инструмент.
Файл → Сравнить каталоги
http://msdn.microsoft.com/en-us/library/aa266122(VS.60).aspx
В этой статье описывается, как использовать его из командной строки. Большим преимуществом этого инструмента является то, что он уже включен, и вам не нужно скачивать и устанавливать что-либо.
Ответ 7
Чтобы сравнить данные с командной строкой, вы можете использовать
COMP/a/l D:\Folder1\data.txt D:\Folder2\data.txt
Могут быть разные параметры, такие как определенные числа строк для поиска и поиска без учета регистра, и даже вы можете сравнивать папки с командной строкой. Ниже приведены другие варианты сравнить файлы и папки с командной строкой.
Ответ 8
Частичное решение с ROBOCOPY
Частичное решение (и, следовательно, для меня, к сожалению, это "не-решение", хотя я и возлагал на него большие надежды), что может быть или не быть достаточно для вас:
Кажется, Инструмент ROBOCOPY может быть (ab-) использован для того, чтобы работать как ребяческое рекурсивное сравнение с недобросовестными людьми; с несчастливым ограничением, что он, по-видимому, не сравнивает содержимое файла. Кажется, он сравнивает размеры, даты и необязательные атрибуты. Волшебное заклинание для этого было бы:
ROBOCOPY path1 path2 /e /l /ns /njs /njh /ndl /fp /log:result.txt /it
где параметры Значение кажется следующим:
-
/e
- recurse, включая пустые каталоги; -
/l
- распечатать только журнал, не изменять файлы; -
/ns /njs /njh
- не печатать размеры файлов, резюме задания, заголовок задания; -
/ndl
- "не записывать имена папок"- ПРИМЕЧАНИЕ: это, как сообщается, приведет к пропущению случаев отсутствия/лишних пустых директорий; если вы не используете это, те должны войти в систему, но вам придется каким-то образом удалить не различающиеся диски другими способами;
-
/log:result.txt
- записывать результаты в файл result.txt; Я думаю, что это можно опустить, и результат будет показан на стандартном выходе.
Дополнительные параметры:
-
/it
- Я думаю, что это нужно добавить, если вы хотите также сравнить атрибуты - см. объяснение того, какие "tweaked" файлы есть.
Предупреждение: НЕ сравнивает содержимое файла
Как я уже говорил, это, похоже, не сравнивает содержимое файла, к сожалению. Я проверил это, выполнив следующую команду:
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 дал пустой набор результатов для меня.
Ответ 9
В Windows 10 вы можете запустить команду diff
в bash
, включив оболочку Linux Bash