我找到的所有答案都是关于删除重复文件的,但我想保留重复的文件名(不是文件,它们只有相同的名称)。
我一直在尝试使用 RAW 照片处理软件。我使用过两个不同的程序来处理一组照片。使用软件 A 后,我选择了想要保留的图像(并删除了其他图像)。但是,我更喜欢软件 B 的处理。
现在我有一整套文件C:\Temp\B\
(980 张图片)和精选文件C:\Temp\A\
(544 张图片)
有没有办法过滤掉我在 A 中未选择的图像并从中删除这些文件C:\Temp\B\
?
我使用的是 Windows 10,我可以使用 bash(使用 babun)或 Python 编写一些脚本。
答案1
我的解决方案是改编https://stackoverflow.com/questions/1995373/deleting-all-files-in-a-directory-with-python
我已经在 Visual Studio Code 中使用 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))
答案2
您可以将以下行保存到新的批处理文件(.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\