Windows - (!) Dupliziere Dateinamen aus verschiedenen Ordnern

505
RedPixel

Bei allen Antworten geht es um das Löschen doppelter Dateien, aber ich möchte doppelte Dateinamen behalten (nicht Dateien, sie haben nur den gleichen Namen).

Ich habe mit RAW-Fotobearbeitungssoftware herumgespielt. Ich habe zwei verschiedene Programme verwendet, um Fotos zu bearbeiten. Nach der Verwendung von Software A habe ich eine Auswahl der Bilder getroffen, die ich behalten möchte (und die anderen löschen). Allerdings gefällt mir die Verarbeitung von Software B besser.

Nun habe ich einen vollständigen Satz von Dateien C:\Temp\B\(980 Bilder) und eine Auswahl C:\Temp\A\(544 Bilder).

Gibt es eine Möglichkeit, die Bilder herauszufiltern, die ich nicht in A ausgewählt habe, und diese Dateien zu löschen C:\Temp\B\?

Ich benutze Windows 10, ich bin gut damit, ein bisschen Scripting in bash (using babun) oder Python zu verwenden.

0

2 Antworten auf die Frage

1
RedPixel

Meine Lösung ist eine Anpassung von https://stackoverflow.com/questions/1995373/deleting-all-files-in-a-directory-with-python

Ich habe dies in Visual Studio Code mit der Python-Erweiterung ausgeführt

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))

Schön, aber da Sie die gesamte Datei durchlaufen, um die Liste zu erstellen, löschen Sie sie einfach dort und dort. Gehen Sie also nicht alle Dateien durch und fügen Sie die gewünschten Dateien zur Liste hinzu. Gehen Sie die Dateien durch und löschen Sie die gewünschten Dateien. Tomer Godinger vor 6 Jahren 0
@TomerGodinger Guter Punkt, ich brauche die zweite for-Schleife nicht. Ich habe die Antwort aktualisiert, um diese Änderung widerzuspiegeln. RedPixel vor 6 Jahren 0
0
jalbarl

You can save the following line into a new batch file (.cmd or .bat):

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

Now you have all the files from A, which are present in B, to be moved from B into a new folder X. Do a visual inspection to ensure that everything is OK, and then delete B manually.

You can also run that command from CMD, but you must leave a single percent sign instead of two.

Be very, very careful, as a single missing character can eat all your B files. I ran the command like this first, to make sure that it is safe:

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