![]() |
Сравнение файлов в каталогах.
Всем доброго времени суток.
Прочитал все похожие темы. но сам что-то дотумкать немогу. Потому прошу о помощи. Есть два каталога с файлами. например D:\1 и D:\2. Нужно сравнить файлы из 1 и 2 между собой и удалить все одинаковые из каталога 2 Файлы маленькие по размеру, если возможно сравнение по CRC или MD5, то вообще отлично. |
PowerShell 3.0 и выше:
Код:
Function Get-FileHash |
Стесняюсь спросить а как этим пользоваться?
Скопировал содержимое в тестовой файл. Поставил расширение BAT и не чего не происходит. ая-яй в названии темы не то указано, нужно было CMD/BAT. Приношу свои извинения, видать что-то глюкнуло. Прошу модераторов отредактировать название, так как мне это уже не доступно. |
Цитата:
Цитата:
|
|
В принципе хрен с ним с хешем, а если сравнивать по размеру например.
Вроде в Bat можно так сделать, Получается: как сравнить содержимое двух папок, файлы по размеру, и удалить одинаковые в одной из них. |
NikolayHAOS, Вам действительно нужен именно скрипт? Для автоматизации, не одноразовое действие?
|
Код:
for %%f in (d:\2\*.*) do ( Если достаточно проверки по размеру, то изменим вот так: Код:
for %%f in (d:\2\*.*) do ( |
Цитата:
|
Iska, да скрипт, если бы один раз, то и вручную можно сравнить.
Есть набор файлов содержимое которых обновляется время от времени, но не всех сразу, задача быстренько отсеять не изменившиеся, до того как обратился на форум сравнивал через просмотр в архиваторе :o , там CRC считается. Гуллипут кодировка UTF-8, второй вариант (по размеру) отлично отработал, НО какова вероятность изменения файла с сохранением изначального размера? вот и я думаю, а вдруг. Мобыть кто-то может подсказать почему скрипт, предложенный Kazun, не срабатывает? |
Цитата:
|
Iska, Абсолютно согласен с вами.
Как правильно запустить скрипт, подскажите пожалуйста. Бьюсь бьюсь весь инет перерыл, ан нет все равно ошибка, мобыть в скрипте чего не так? |
Выше я написал и тов. Iska дал ссылку, что требуется версия PowerShell 3.0 и выше.
Посмотреть версию PowerShell - $PSVersionTable.PSVersion |
Kazun, Агромное спасибо вы просто гений, все заработало.
Iska, Почему то считал что Framework 3.0 включен в 4.5.1 - ошибся. Установил и все отлично. Цитата:
Всем агромное спасибо. З.Ы. Жаль, что сам нефига не понимаю в этом скрипте, ща попробую изменить пути на свои. И отпишу. Все работает. Благодарю. |
NikolayHAOS, я говорил про кодировку самого bat-файла. Кодировка сравниваемых файлов безразлична. Они могут быть даже двоичные, только надо добавить после команды fc ключ /b:
Код:
for %%f in (d:\2\*.*) do ( Поскольку bat - это язык файло-ориентированный, многие операции над файлами в нём программируются намного проще, чем в других. Поэтому я не считаю это садомазохизмом. :tongue: |
Гуллипут, дело, разумеется, не в Вашем коде, а в особенностях сравнения «fc.exe»: в общем случае сравнение по хэшам выигрывает в производительности.
|
Гуллипут, Спасибо и ваш метод отлично работает, И в мне легче разобраться в вашем коде, так как его почти там нет :-).
|
Цитата:
Правда, я не разбирался в алгоритме, который выложил Kazun, может, он так и делает ? Но для этого ему надо ставить обработчик на событие изменения файлов в каталоге. В принципе, реально, я это делал на Delphi, но не знаю, может ли это PowerShell. В нём я не разбираюсь: пару лет назад проглядел одну книжку, но на работе это не используется, поэтому и благополучно забыл прочитанное. |
Цитата:
CloneSpy умеет работать с предварительно рассчитанными им и сохранёнными наборами хэшей файлов. Это удобно в случае, аналогичном рассматриваемому — когда неизменный или редко обновляемый набор файлов сравнивается со вновь поступающими наборами файлов. |
Iska, я сравниваю не каждый файл с каждым, а файлы с совпадающими именами. Поскольку "одинаковость файлов" я понял, как совпадение не только содержимого, но и имён.
|
http://forum.wincmd.ru/viewpost.php?p=80462
вижу, можно улучшить: сначала найти группы одинаковых по размеру файлов, и только их сравнивать по хешу (параноики могут сравнивать по содержимому ;) для Total Commander http://wincmd.ru/plugring/DupSelector1001.html Цитата:
|
kiripanda, я свой выбор давно сделал — это CloneSpy.
|
Время: 13:41. |
Время: 13:41.
© OSzone.net 2001-