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

Geschrieben

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

Geschrieben

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

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

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...