CMD/Batch Befehl zur Dateiverwaltung?

...komplette Frage anzeigen

2 Antworten

Habe ich dich richtig verstanden? Du hast mehrere Dateien in zwei Ordnern, wobei im zweiten Ordner auch weitere Dateien liegen, und willst aus dem zweiten Ordner die Duplikate löschen?

Wenn die Dateien nur anhand des Namens identifiziert werden (müssen):

FOR %%A IN ("%X%\*") DO (IF EXIST "%Y%\%%A" DEL "%Y%\%%A")

Wenn die Dateien Byte für Byte übereinstimmen müssen, muss noch eine weitere IF-Bedingung eingeführt werden von der Art

FC /B "%X%\%%A" "%Y%\%%A" >NUL
IF NOT ERRORLEVEL 1 DEL "%Y%\%%A"

Also du hast in Ordner X als Beispiel a.txt b.txt c.txt und in

Ordner Y a.txt b.txt c.txt f.txt z.txt und es sollen dann noch f.txt und z.txt erhalten bleiben in Y erhalten bleiben?

Genau. Ich will aber nicht die konkreten Daten a.txt, b.txt und c.txt im befehl aufnehmen, da die Daten im X-Ordner variieren können (zb. noch d.txt).

0
@PeterVonDeich

Bei Batch fällt mir da gerade keine konkrete Lösung ein. Ich würde die für so etwas eher Programmiersprachen wie C++ ans Herz legen. Vorteil: Keiner kann den Code ändern/sehen (da .exe) und du kannst es im cmd fenster machen.

0
@Allptraum

Ich habe gerade mal sporadische Grundkenntnisse in dos, das gestaltet sich daher relativ schwer... Fällt dir grob eine Lösung in C++ ein?

0
@PeterVonDeich

Das ist etwas komplizierter, da die Namen und Anzahl der Dateien unbekannt ist. 

In C++ kannst du eine Liste von Strings mit dem Dateinamen speichern.  Wenn du es also schaffst, eine list<string> mit den dateipfaden vom content von OrdnerX zu erstellen, wäre das kein problem.


Ich probiere das ganze mal zu lösen. Ich kommentiere dir hier dann einen Pastebin link

0

Was möchtest Du wissen?