У меня есть две папки. Одна из них (папка 1) имеет изображения, а другая (папка 2) имеет несколько подпапок с изображениями. Я хотел найти изображения в папке 1, которые дублируются в папке 2 или любой из ее подпапок, и удалить их. Перемещение недубликатов в новую папку (папка 3) также является опцией.

Могу ли я сделать это с помощью командной строки? Мне нужен сценарий?

Я попытался использовать FreeFileSynch, но он не работает, если в папке 2 есть подпапки.

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

2 ответа2

0

Вот правильный способ сделать это, без внешних загрузок. На первый взгляд это выглядит много, но как только вы это сделаете, это будет очень просто. Работает во всех версиях Windows от 7 до 95. Для нашего примера предположим, что вы сравниваете две директории с именами «A» и «B». 1. запустите cmd.exe, чтобы получить командную строку. (В Windows 7 PowerShell не будет работать для этого, к вашему сведению.) Затем сделайте это снова, чтобы два из них были открыты рядом друг с другом. 2. в каждом окне перейдите в каталоги, которые вы хотите сравнить. (Используя команды 'cd'. Если вам это неудобно, то вам, вероятно, стоит воспользоваться внешними утилитами, если вы не хотите изучать материал командной строки.) 3. введите «dir /b> A.txt» в одно окно и «dir /b> B.txt» в другое. Теперь у вас будет два текстовых файла со списком содержимого каждого каталога. Флаг /b означает пустой, что сокращает список каталогов до имен файлов. 4. Переместите B.txt в ту же папку, что и A.txt. 5. введите «fc A.txt B.txt». Команда 'fc' означает сравнение файлов. В результате будет выведен список различий между двумя файлами с дополнительной строкой текста над и под каждым различием, чтобы вы знали, где они находятся. Чтобы узнать больше о форматировании вывода, введите 'fc /?«по подсказке. Вы также можете передать различия в другой файл, используя что-то вроде 'fc A.txt B.txt> sizes.txt'. Повеселись.

0

Таким образом, решение, которое я нашел, не идеально, но работает.

Я скопировал все файлы из папки 1 во временную папку, выравнивая иерархию с помощью команды forfiles в командной строке. Затем я переместил файлы из временной папки в папку 2, заменив некоторые из них. Файлы, которые были перемещены, были удалены, поскольку они уже были в папке 1.

1) В командной строке: forfiles /p C:\folder1 /s /c "cmd /c copy @path C:\ временная папка"

2) В проводнике Windows: переместите файлы из временной папки в папку 2 и замените существующие файлы. Пока файлы выбраны, удалите их. Остальные файлы - это файлы из папки 2, которых не было в папке 1.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .