2016-12-20 2 views
-1

Мне нужно сравнить две папки с помощью командных команд. Обе папки имеют в них подкаталоги и файлы. Сравнение должно проверять каждый файл. Если есть какая-то разница, например, если мы сравниваем folder1 и folder2 и file1 присутствует в folder1 но его нет в folder2, то он должен вернуть true (так что я могу сделать некоторые другие операции), иначе false.Сравните две папки, используя пакетный скрипт, а затем запустите некоторые командные команды на основе результата

Я на самом деле делаю копию из одной папки в другую. Как только это будет сделано, мне нужно проверить, скопированы ли все файлы.

Примечание: я не могу использовать сторонние инструменты.

+1

Очень важно, чтобы вы расширили свой вопрос, чтобы точно определить, что вы думаете, определяет любую разницу. Также важно предоставить некоторый код с вашим вопросом. – Compo

ответ

2
@echo off 
REM Writing the folder tree to a file for each path 
pushd "Folder 1" 
for /f "delims=" %%c in ('tree /f') do >>"%~dp0folder1.txt" echo "%%c" 
popd 
pushd "Folder 2" 
for /f "delims=" %%d in ('tree /f') do >>"%~dp0folder2.txt" echo "%%d" 
popd 

REM removing the first three lines from each of the two files 
more +3 "folder1.txt" >"folder1.txt.new" 
move /y "folder1.txt.new" "folder1.txt" >nul 

more +3 "folder2.txt" >"folder2.txt.new" 
move /y "folder2.txt.new" "folder2.txt" >nul 

REM comparing files 
fc /b folder1.txt folder2.txt>nul && echo same || echo different 

REM cleaning up 
del folder1.txt 
del folder2.txt 

Должен работать до тех пор, пока папки находятся на одном диске. Изменяет каталог в первую папку и печатает вывод дерева команд в один файл и тот же для другой папки.
Затем сравнивает /b Инары х Ile с omparison и выходы same, если выходы команды и с папками, которые являются одинаковыми. Если нет, то выдает different.
Удаляет два справочных файла после.

ПРИМЕЧАНИЕ: Если у вас уже есть файлы с этими именами, измените его!

Не стесняйтесь спросить, если что-то непонятно :)

Edit: Удалить первые 3 строки для предотвращения сравнения faliures, основанные на том, номер/Drive-Letter. Кредит на способ удаления идет на dbenhams answer на другой вопрос.

+0

Привет @ geisterfurz007, Спасибо за ответ. Я боюсь, что папки находятся на разных дисках, одна папка находится на физическом диске, а другая - в подключенном диске. – bkr

+1

Видел, исследовал и редактировал. – geisterfurz007

+0

@bkr Нет ли чего-то недостающего? Если нет, подумайте о том, чтобы отметить это как ваш ответ, иначе я должен знать, что улучшить! – geisterfurz007

Смежные вопросы