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

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

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

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

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

2 ответа2

1

Мое решение - это адаптация 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))

0

Вы можете сохранить следующую строку в новый пакетный файл (.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\

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