Buecherwurm 16 Geschrieben 2. Juni 2008 Melden Teilen Geschrieben 2. Juni 2008 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 ;). Zitieren Link zu diesem Kommentar
Buecherwurm 16 Geschrieben 4. Juni 2008 Autor Melden Teilen Geschrieben 4. Juni 2008 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 ;-)! Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.