Windows - сохранить (!) Повторяющиеся имена файлов из разных папок

397
RedPixel

Все ответы, которые я нахожу, касаются удаления дубликатов файлов, но я хочу сохранить дубликаты имен файлов (не файлы, они имеют только одно и то же имя).

Я играл с RAW для обработки фотографий. Я использовал две разные программы для обработки набора фотографий. После использования программного обеспечения A я выбрал изображения, которые хочу сохранить (и удалил остальные). Однако мне больше нравится обработка из программного обеспечения B.

Итак, теперь у меня есть полный набор файлов C:\Temp\B\(980 изображений) и выборка C:\Temp\A\(544 изображений)

Есть ли способ отфильтровать изображения, которые я не выбрал в A, и удалить эти файлы C:\Temp\B\?

Я использую Windows 10, я в порядке с использованием небольшого количества сценариев в Bash (с помощью Babun) или Python.

0

2 ответа на вопрос

1
RedPixel

Мое решение - адаптация https://stackoverflow.com/questions/1995373/deleting-all-files-in-a-directory-with-python

Я запустил это в коде Visual Studio, используя расширение Python

import os a = os.listdir("C:/Data/A") b = os.listdir("C:/Data/B") for f in b: if f not in a: print(f) os.remove(os.path.join("C:/Data/B", f))

Хорошо, но, видя, как вы перебираете все файлы для создания списка, почему бы не удалить их прямо сейчас и там? Т.е. вместо того, чтобы просмотреть все файлы и добавить те, которые вы хотите, в список, просмотрите файлы и удалите те, которые вы хотите. Tomer Godinger 6 лет назад 0
@TomerGodinger Хорошо, мне не нужен второй цикл for. Я обновил ответ, чтобы отразить это изменение. RedPixel 6 лет назад 0
0
jalbarl

Вы можете сохранить следующую строку в новый пакетный файл (.cmd или .bat):

FOR %%A in (C:\Temp\A\*) DO MOVE C:\Temp\B\%%~nxA C:\Temp\X\ 

Теперь у вас есть все файлы из A, которые присутствуют в B, для перемещения из B в новую папку X. Выполните визуальный осмотр, чтобы убедиться, что все в порядке, а затем удалите B вручную.

Вы также можете запустить эту команду из CMD, но вы должны оставить один знак процента вместо двух.

Будьте очень, очень осторожны, так как один пропущенный символ может съесть все ваши B-файлы. Сначала я выполнил команду, чтобы убедиться, что она безопасна:

FOR %%A in (C:\Temp\A\*) DO ECHO MOVE C:\Temp\B\%%~nxA C:\Temp\X\