grins 10 Geschrieben 17. Januar 2007 Melden Teilen Geschrieben 17. Januar 2007 Hallo Forum, ich brauche eine Batch-Datei die mir bei folgendem Problem hilft: Im Verzeichnis A sind Dateien, die ins Verzeichnis B kopiert werden sollen. Aber nur die, die im Verz. C noch nicht vorhanden sind. Einfach überschreiben, bzw. mit robocopy -minage und ähnliches geht nicht. Es muss der weg über drei Verzeichnisse gegangen werden. Wie krieg ich sowas hin? Vielen Dank :) Grins Zitieren Link zu diesem Kommentar
humpi 11 Geschrieben 17. Januar 2007 Melden Teilen Geschrieben 17. Januar 2007 Hi, also muss Verzeichnis A mit Verzeichnis C verglichen und dann die fehlenden Datei ins Verzeichnis B kopiert werden. Ist das soweit richtig? Zitieren Link zu diesem Kommentar
grins 10 Geschrieben 17. Januar 2007 Autor Melden Teilen Geschrieben 17. Januar 2007 ja, korrekt. Zitieren Link zu diesem Kommentar
humpi 11 Geschrieben 17. Januar 2007 Melden Teilen Geschrieben 17. Januar 2007 Hi, also zum vergleichen kannst du windiff benutzen. Geht auch von der Kommandozeile. Zitieren Link zu diesem Kommentar
grins 10 Geschrieben 17. Januar 2007 Autor Melden Teilen Geschrieben 17. Januar 2007 ja, an windiff hab ich auch schon gedacht. Aber wie schaff ich es, die datein, die windiff als different erkennt in Verz. B zu schaufeln? Zitieren Link zu diesem Kommentar
colarum 10 Geschrieben 17. Januar 2007 Melden Teilen Geschrieben 17. Januar 2007 teste es evt mal mit ultracompare ich glaub das kann sowas bin mir aber nicht mehr sicher. mfg Thomas Zitieren Link zu diesem Kommentar
grins 10 Geschrieben 17. Januar 2007 Autor Melden Teilen Geschrieben 17. Januar 2007 ultracompare kann in der console nicht mehr wie windiff. :( könnte es irgenwie mit if exist datei_von_Verz.A im Verz.C copy ins Verz. B geht sowas? evtl. mit variablen? bin kein begabter batcher :) Zitieren Link zu diesem Kommentar
Lian 2.468 Geschrieben 17. Januar 2007 Melden Teilen Geschrieben 17. Januar 2007 Wozu windiff - geht es um den Vergleich der Dateinamen, oder auch des Inhalts? Sonst würde ein einfaches IF EXIST reichen. Zitieren Link zu diesem Kommentar
grins 10 Geschrieben 18. Januar 2007 Autor Melden Teilen Geschrieben 18. Januar 2007 es geht nur um die dateinamen. Aber ich weiss im voraus nicht, wie die Datein heissen, die werden automatisch generiert und haben leider keine fortlaufenden nummern oder sowas (dann hätte ich auch das problem nicht). wie würde die syntax mit if exist aussehen? ich weiss nur dass es den befehl gibt, aber nicht wie man ihn umsetzt :rolleyes: Zitieren Link zu diesem Kommentar
Finanzamt 76 Geschrieben 18. Januar 2007 Melden Teilen Geschrieben 18. Januar 2007 Hi! Bei solch "komplizierteren" Fällen nehm ich immer dBase bzw. einen xBase-Clone. Dazu erzeuge ich zwei Tabellen mit identischen Strukturen, zb. Name: Verz1, Feldname: Datei, Typ: Char, Länge: 254 Dann lasse ich mir mit DIR /B > Verz1.txt und DIR /B > Verz2.txt die Dateien in Kurzform in die VerzX-Dateien ausgeben. Mit USE Verz1; ZAP; APPE FROM Verz1.txt SDF lese ich die Inhalte in die Tabellen. Die öffne ich, SELEktiere die erste, les den Filenamen ein und schaue mit LOCA FOR in der zweiten Tabelle nach, ob die Datei da ist. Wenn nicht: Kopie via RUN COPY plus Parameter, wenn da: SKIP. Alles bis EOF(). Du bist ja nicht auf xBase angewiesen, ist mit einem (wenn vorhanden) Datenbänkchen-Prog nur recht schnell getan. Wenn Du keine wirklich passende Lösung findest und/oder mit meinem Tip nicht klar kommst, kannst Du Dich wg. weiterer Unterstützung ja noch mal melden. Gegrüßt! Zitieren Link zu diesem Kommentar
Lian 2.468 Geschrieben 18. Januar 2007 Melden Teilen Geschrieben 18. Januar 2007 wie würde die syntax mit if exist aussehen? ich weiss nur dass es den befehl gibt, aber nicht wie man ihn umsetzt :rolleyes: Zum Beispiel so: @echo off if exist c:\dateiname.txt ( copy a:\dateiname.txt b:\ ) else ( echo datei nicht vorhanden ) 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.