Windows - 異なるフォルダからファイル名を重複しないようにしてください。


0

私が見つけたすべての答えは重複したファイルを削除することに関するものですが、私は重複したファイル名を残したいのです(ファイルではなく、それらは同じ名前を持っているだけです)。

RAW写真処理ソフトウェアで遊んでいます。私は写真のセットを処理するのに2つの異なるプログラムを使いました。ソフトウェア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

Pythonエクステンションを使って、これをVisual Studioコードで実行しました。

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

@TomerGodinger良い点、2番目のforループは必要ありません。この変更を反映するように回答を更新しました。
RedPixel

0

次の行を新しいバッチファイル(.cmdまたは.bat)に保存できます。

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

これで、Bから新しいフォルダXに移動するための、Bに存在するAからのすべてのファイルが作成されました。

CMDからそのコマンドを実行することもできますが、2つではなく単一のパーセント記号を残す必要があります。

1つの行方不明の人があなたのすべてのBファイルを食べることができるので、非常に、非常に注意してください。安全であることを確認するために、最初にこのようにコマンドを実行しました。

FOR %%A in (C:\Temp\A\*) DO ECHO MOVE C:\Temp\B\%%~nxA C:\Temp\X\
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.