Robocopy Verzeichnisname Datenbank und ini files NICHT kopieren jedoch NUR von der Root ansonsten schon
Hallo Zusammen,
ich versuche mit Robocopy eine Verzeichnisstruktur von Quelle nach Ziel zu kopieren. Dabei sollen alle Dateien und Unterverzeichnisse kopiert werden.
Ausnahme: Das Verzeichnis Datenbank in der Root und alle .ini Files in er Root sollen nicht kopiert werden. Wenn das Verzeichnis "Datenbank" und weitere .ini Files in Unterverzeichnissen stehen, sollen sie schon kopiert werden.
rem /E alle Verzeichnise und Unterverzeichnise kopieren
rem /xd Verzeichnis ausschließen
rem /xf Dateien ausschließen
robocopy Quelle Ziel *.* /E /xd Datenbank /xf *.ini
c:\Quelle\Programm.ini
c:\Quelle\Datenbank\MeineDatenbank.sql
c:\Quelle\SEPA\Datenbank\db.dat
c:\Quelle\SEPA\SEPATool.exe
c:\Quelle\SEPA\SEPATool.ini
Wenn ich das Kommando wie oben ausführe, wird c:\Quelle\SEPA\Datenbank\db.dat nicht kopiert weil "Datenbank" in der Ignore Liste ist.
Ebenfalls wir die c:\Quelle\SEPA\SEPATool.ini nicht kopiert weil alle .ini Files in der Ausnahme stehen.
Das hat auch nicht funktioniert:
robocopy Quelle Ziel *.* /E /xd \Quelle\Datenbank /xf \Quelle\*.ini
robocopy Quelle Ziel *.* /E /xd Quelle\Datenbank /xf Quelle\*.ini
Hat jemand eine Idee?
ich versuche mit Robocopy eine Verzeichnisstruktur von Quelle nach Ziel zu kopieren. Dabei sollen alle Dateien und Unterverzeichnisse kopiert werden.
Ausnahme: Das Verzeichnis Datenbank in der Root und alle .ini Files in er Root sollen nicht kopiert werden. Wenn das Verzeichnis "Datenbank" und weitere .ini Files in Unterverzeichnissen stehen, sollen sie schon kopiert werden.
rem /E alle Verzeichnise und Unterverzeichnise kopieren
rem /xd Verzeichnis ausschließen
rem /xf Dateien ausschließen
robocopy Quelle Ziel *.* /E /xd Datenbank /xf *.ini
c:\Quelle\Programm.ini
c:\Quelle\Datenbank\MeineDatenbank.sql
c:\Quelle\SEPA\Datenbank\db.dat
c:\Quelle\SEPA\SEPATool.exe
c:\Quelle\SEPA\SEPATool.ini
Wenn ich das Kommando wie oben ausführe, wird c:\Quelle\SEPA\Datenbank\db.dat nicht kopiert weil "Datenbank" in der Ignore Liste ist.
Ebenfalls wir die c:\Quelle\SEPA\SEPATool.ini nicht kopiert weil alle .ini Files in der Ausnahme stehen.
Das hat auch nicht funktioniert:
robocopy Quelle Ziel *.* /E /xd \Quelle\Datenbank /xf \Quelle\*.ini
robocopy Quelle Ziel *.* /E /xd Quelle\Datenbank /xf Quelle\*.ini
Hat jemand eine Idee?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 527871
Url: https://administrator.de/contentid/527871
Ausgedruckt am: 25.11.2024 um 17:11 Uhr
7 Kommentare
Neuester Kommentar
Hi,
Womit auch immer (Batch, PS, VBscript) ...
E.
Womit auch immer (Batch, PS, VBscript) ...
- mit "For Each" durch die Elemente der Quellen-Root gehen
- für jedes Verzeichnis außer "Datenbank" einen Robocopy-Job auslösen
- jede Datei außer *.ini kopieren
E.
Hi!
Die Parameter /E /S kopieren alle Verzeichnisse und Unterverzeichnisse inkl Files und leere Ordner
/XF: Ausnahme Datei
/XD: Ausnahme Ordner
Du musst deinen Job also aufteilen.
Zuerst Alles was du sicher brauchst. Also...
Im zweiten Schritt...
Grüße!
Die Parameter /E /S kopieren alle Verzeichnisse und Unterverzeichnisse inkl Files und leere Ordner
/XF: Ausnahme Datei
/XD: Ausnahme Ordner
Du musst deinen Job also aufteilen.
Zuerst Alles was du sicher brauchst. Also...
Robocopy "c:\Source" D:\Destination" /xd "DatenBank" /xf "*.ini" /E /S R:5 W:5 UNINLOG+:C:\Logs\robo.log
Im zweiten Schritt...
Robocopy "c:\Source\Datenbank" D:\Destination" /xf "*.ini" "*.sql" "*.exe" /E /S R:5 W:5 UNINLOG+:C:\Logs\robo.log
Grüße!
Zitat von @Kostas:
In meinem Fall kommt es nicht vor das in den Unterverzeichnissen weitere .ini Files existieren. Deshalb kann ich im zweiten Aufruf SEPA komplett kopieren.
Dann ist aber Deine ursprüngliche Problembeschreibung mangelhaft und deshalb irreführend.In meinem Fall kommt es nicht vor das in den Unterverzeichnissen weitere .ini Files existieren. Deshalb kann ich im zweiten Aufruf SEPA komplett kopieren.
Zitat von @Kostas:
Gesucht habe ich dennoch nach einer Möglichkeit in dieser ich den Pfad angeben kann in der Ignore Liste.
Gesucht habe ich dennoch nach einer Möglichkeit in dieser ich den Pfad angeben kann in der Ignore Liste.
Das gibt es schon. Schau dir mal den Parameter /PURGE an. Du kannst dir ein Struktur-Model basteln. Im Ziel wird dann alles gelöscht was in der Source nicht mehr vorhanden ist
Auch der Parameter /LEV lässt zu, dass du 'n' in die Tiefe gehst zum Kopieren.
nach dem Muster:
Ignoriert alle Verzeichnisse namens Datenbank und alle Dateien von Typ .ini Das funktioniert einwandfrei
robocopy Quelle Ziel *.* /E /xd Datenbank /xf *.ini
Ignoriert alle Verzeichnisse namens Datenbank und alle Dateien von Typ .ini Das funktioniert einwandfrei
robocopy Quelle Ziel *.* /E /xd Datenbank /xf *.ini
So ist das Beispiel gedacht
Ignoriere den Ordner Datenbank nur aus root und ignoriere alle .ini Dateien aus der Root. Das funktioniert leider nicht und das ist schade.
robocopy Quelle Ziel *.* /E /xd \Quelle\Datenbank /xf \Quelle\*.ini
robocopy Quelle Ziel *.* /E /xd \Quelle\Datenbank /xf \Quelle\*.ini
/XF und /XD haben sehr wohl die Option ganze Pfade zu verarbeiten. Du kannst also 2x oder öfter einen gesamten Pfad mit identischer Struktur und Benennung angeben. So ist es etwas selektiver.
/XD "Datenbank" = Alles was so ausschaut
/XD "Source\bla\Datenbank" "Source\Bla\Bla\BLA\Datenbank" = Nur die 2
Dito bei /XF. Zumindest steht es so beschrieben.
Ich habe es noch nie so selektiv eingesetzt. Mir ist es lieber mehrere Befehle abzusetzen.
Grüße!