Batch Differenz 2er Ordner ermitteln und abspeichern

Lepheus

Newbie
Registriert
Okt. 2010
Beiträge
6
Hallo liebe Forengemeinde,

war heute auf der Suche nach Hilfe bzgl Batchprogrammierung und da bin ich auf dieses interessante Forum gestoßen. Habe mich in der Hoffnung hier angemeldet, das mir evtl jemand weiterhelfen kann. Für jede Mühe möchte ich mich schonmal im vorraus bedanken.

Also folgendes Problem gibt es zu lösen für mich:

Es gibt 2 Ordner, Ordner1 und Ordner2.
Ordner1 und Ordner2 sind von der Struktur her fast gleich, nur in Ordner2 gibt es neue Dateien die es in Ornder1 nicht gibt. Denn die Ordner sind Sicherungen von einem bestimmten Fileserver an z.B. 2 aufeinander folgenden Tagen.

Die Aufgabe ist es mit Hilfe einer Batchdatei, die Differenz der beiden Ordner herrauszufinden und diese Differenz in einen Ordner3 abzuspeichern. Das heißt, in Ordner 1 gibt es z.B. die Dateien "Text1.txt" und "Text2.txt". In Ordner2 gibt es ebenfalls diese beiden Dateien und eine neue Datei "Text3.txt". Diese "Text3.txt" soll ermittelt werden und in Ordner 3 kopiert werden.

Hoffe es ist eingermaßen verständlich was ich vorhabe?
Mit RoboCopy und Xcopy habe ich das schon versucht, leider ohne erfolg, denn dort kann man nur 2 Ordner abgleichen soweit ich weiß. Habe überlegt ob es evtl mit "dir" geht, das heißt in eine Textdatei den Ordnerinhalt abspeichern mit Unterverzeichnissen etc und dann die 2 Textdateien vergleichen, aber leider kann ich das nicht so umsetzen wie ich mir das denke.

Im Optimalfall wäre es gut, das man sogar bei Batchstart die Ordnernamen "Ordner1" und "Ordner2" manuell eingeben könnte, denn diese Namen ändern sich ja jeden Tag, bzw ist ein Zeitstempel in der Form: 2010-10-25.

Wenn etwas unverständlich ist, bitte sofort nachfragen.

Bin für jeden Tipp dankbar.

MfG Lepheus
 
ist zwar keine batchlösung, aber schau dir mal das synctoy von microsoft an. macht genau das, was du willst und lässt schön als task planen.
 
Vielen dank erstmal für den Tipp, aber meines Wissens nach arbeitet dieses Synctool doch mit den Robocopy mitteln, und deswegen kannst du damit glaube ich nur 2 Ordner synchronisieren, aber nicht die Differenz in einen 3 Ordner schreiben.
 
hab das noch nicht so oft benutzt, dachte aber, das sei sehr umfangreich gewesen... falls es doch nicht gehen sollte, tuts mir leid, dich auf die falsche fährte geleitet zu haben.
 
Kein Problem, trotzdem vielen Dank.

Evtl hat ja ein anderer Batchprogrammierer eine gute Idee ;-)
 
du könntest erstmal den befehl dir (mit den richtigen parametern) auf die beiden ordner anwenden und die ergebnisse (dateinamen) in jeweils eine datei schreiben. dann gehst du zeile für zeile durch die eine datei und vergleichst mit jeder zeile aus der anderen datei auf gleichheit. falls ne zeile nicht gefunden wird, dann schreibst du sie in ne dritte textdatei. am ende gehst du die dritte textdatei (mit den dateien, die auf der einen seite existieren und auf der anderen nicht) wieder zeile für zeile durch und kopierst mit dem befehl copy die dateien in den dritten ordner. so würd ich das machen. ;)

edit:

dir X:\ordnerpfad /A-D-L /B /S >> X:\ordner\tempdatei.txt

-> listet alle dateien auf und schreibt sie in ne textdatei.

FOR /F "delims=" %i IN pfad\textdatei.txt

-> geht zeile für zeile durch die datei.


wie du dir das ganze am ende dann aber zusammenbastelst bleibt dir überlassen. ^^

kürzer vllt. auch:

FOR /F "delims=" %i IN (dir X:\ordnerpfad /A-D-L /B /S) DO irgendwas usw.
 
Zuletzt bearbeitet:
Das hört sich gut an, hatte ich auch schon prorbiert, jedoch konnte ich mit dem Befehel "dir" nur immer den ganzen Pfad einer Datei ermitteln und in die TXT schreiben, und beim vergleichen konnte ich nur immer komplett vergleichen, also auch mit Pfad, und der ist ja immer unterschiedlich.

Hättest du evtl eine Idee welche Parameter man nutzen muss und wie man das mit dem vergleichen am besten macht?
 
vergleichen z.b. ingefähr so:

if expression1 equ expression2 do irgendwas else do irgendwas andres

einfach mal if /? und dir /? etc. in der konsole eingeben. die hilfe ist in der regel recht aufschlussreich... ;)
 
ja aber ich hatte folgendes problem bei dem befehel "dir", er hatte das in die txt geschrieben:

C:\verz-2010-10-25\Ordner1\Text1.txt

und in die andere TXT dann:

C:\verz-2010-10-24\Ordner2\Text1.txt

Und das sind ja die gleichen Dateien, aber der Vergleich erkennt es als Unterschied da die Pfade ja unterschiedlich sind...
 
hmmm... möglicherweise musst du dann halt erst zeile für zeile durchgehn und den anfang des pfades abschneiden. am ende, wenn du die unterschiede rausgefiltert und abgespeichert hast pappste die pfade wieder vorne dran.
soweit zur theorie. :D
bin auf das fertige script gespannt... lass von dir hören, wenn du das umgesetzt hast! :)
 
Ja mein Problem ist ja, wie schneidet man die Pfade ab?

Das kann ich ja gerade nicht umsetzen, sonst wäre ich schon längt weiter ^^

Keiner eine Idee oder Tip?
 
Zurück
Oben