Jörg Reinholz: batch - Nach Dateien suchen und auf anderen Laufwerk kopieren

Beitrag lesen

Hallo,

ich möchte mit einer batch Datei in einem Laufwerk von mir nach Dateien suchen, die z.B. "juli" enthalten. Diese Dateien möchte ich dann in einen anderen Ordner kopieren.

Ich möchte aber, dass die Ordnerstruktur in denen die Datei jeweils gefunden wird, im Zielverzeichnis nachgebildet wird.

Beispiel:

Hier wird eine Datei gefunen
D:\meineordner\kosten\sonstiges\umsatz-juli.pdf

Jetzt soll sie hierhin, in der gleichen Ordnerstruktur kopiert werden
C:\zielordner\kosten\sonstiges\umsatz-juli.pdf

Die Dateien aus den Ordnern davor sollen nicht kopiert werden, die Ordnerstruktur soll nur nachgebildet werden.

Hierbei kann Dir find(.exe) aus den UNIX/Linux Tools für Windows helfen. Es liefert dir die Pfad- und Dateinamen zurück. Die kannst Du mit sed(.exe) weiter verarbeiten. sed ist, neben einer Menge sehr(!) nützlichem Zeug (gawk, grep, recode, tr, weget, whois, bc, diff, patch, tar, gzip, unrar ...) auch enthalten.

Mir würde es auch schon helfen zu wissen, wie ich aus %%f den Pfad ohne Laufwerksbuchstaben erhalte, so dass ich ihn an den Zielpfad hängen kann.

Du lässt also find laufen: find.exe -name '*-juli*' -exec DEIN_Skript '{}';

dann wird für jedes 'C:\foo\bar\wasweissich-juli-2013.txt' DEIN_Skript aufgerufen.

Du musst mit sed.exe nur das '[1]:\' durch nichts ('') ersetzen, dann den (Rest-)Pfad weiter in die Ordner zerlegen. Das kann z.B. tr '\' ' ' - dessen Rückgaben Du einer For-Schleife verarbeitest. Problematisch wird das, wenn die Ordner Leerzeichen enthalten...

Für die Ordner von links beginnend prüfen, ob der Ordner existiert, wenn nicht anlegen.
wenn alle durch sind, die Datei kopieren.

Hinweis:

Derlei würde ich wohl gleich mit Perl machen. Das gibt es auch für Windoof kostenlos. Es eignen sich auch viele andere Programmiersprachen.

Tip: kopiere die Dateien aus dem Zip UNIX/Linux Tools für Windows in einen der in %PATH% enthaltenen Ordner.

Jörg Reinholz


  1. a-zA-Z ↩︎