Jump to content

Batch: Auffinden von doppelten Dateien, Vergleich der gefundenen Dateien


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo allesamt,

 

folgende Problematik:

 

Ich versuche derzeit ein Batch-Script zu bauen, mit dem ich auf doppelte Dateien überprüfen kann.

 

Das Script soll im Endeffekt zu folgenden Aktionen in der Lage sein:

 

 

- Abgleich auf doppelte Dateien innerhalb des Verzeichnisses C:\TJ1\

- Abgleich auf doppelte Dateien innerhalb des Verzeichnisses C:\TJ2\

- Abgleich auf doppelte Dateien innerhalb der Verzeichnisse C:\TJ1 UND C:\TJ2

 

- Kennzeichnung von Dateien mit gleichem Namen aber unterschiedlichen Eigenschaften (checksum, Größe, o.a. - Je nach Bedarf).

 

Punkt zwei habe ich folgendermaßen gelöst:

 

for /r C:\tj1\ %%I in (*.*) do (
 for /r C:\tj2\ %%J in (*.*) do (
   if %%~nxI.==%%~nxJ. (
echo %%I sowie %%J
     )
  )
)

 

Was mir momentan etwas Kopfschmerzen bereitet ist Punkt eins - Ich krieg es zwar hin, das Verzeichnis zu vergleichen, jedoch erhalte ich doppelte Ausgaben (z. B. C:\tj1\datei.1 sowie C:\tj1\blub\datei.1 // C:\tj1\blub\datei.1 sowie C:\tj1\datei.1).

 

Gibt es eine alternative Möglichkeit Dateien innerhalb eines Verzeichnisses (inkl. Subdirs) zu vergleichen (z. B. von einer Liste aus nach unten abarbeiten?) ohne das man Duplikate erhält?

 

Des Weiteren hatte ich bzgl. Überprüfung Unterschiedlichen Eigenschaften an die checksum gedacht - gibt es da in der cmd-shell schon eine integrierte Funktion?

 

Ich bin für Vorschläge und Anregungen offen :)!

 

Danke im Vorraus.

 

PS: Ja, ich weiß, es lässt sich auch super in VBS realisieren, aber das ist momentan nicht Ziel der ganzen Sache ;).

Link zu diesem Kommentar

Ist mittlerweile gelöst.

 

Ist vom Prinzip her recht "simpel".

 

Der Code sieht im Endeffekt so aus:

 

Set "yat2=dir2.txt"
Echo\>"%yat2%"
for /R %dir2% %%J in (*.*) do (	
for /R %dir2% %%I in (*.*) do (
 if "%%~nxJ"=="%%~nxI" (
   if "%%J" neq "%%I" (
 FindStr /i /C:"%%I" "%yat2%">nul || echo %%J sowie %%I>>"%yat2%"
   )
 )
)
)

 

Sprich die gesamten Ausgaben in eine LOG-Datei umleiten und diese dann mit FindStr auf den entsprechenden Wert überprüfen. Geht bestimmt mit anderen Programmen einfacher, aber evtl. brauchts ja mal jemand.

 

Falls noch Fragen auftauchen, einfach melden ;-)!

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...