urbanswelt
Goto Top

Dateien suchen-ersetzen

Hallo Forum,

leider hat meine Suche hier keine Treffer aufgezeigt, die meiner Aufgabenstellung entsprechen würden.

Es gibt einen Ordner mit mit einer Vielzahl von PDF Dokumenten als Vorraussetzung (rnd 4000).
Diese PDF Dokumente gibt es in einer anderen Ordnerstruktur mit vielen Unterverzeichnissen auch.

Mein Wunsch wäre es nun, wenn ein PDF Dokument im Quell Ordner dem im Ziel Ordner entspricht soll es mit dem aus der Quelle überschrieben werden.
Wie müsste ich da ran gehen um das zu bewerkstelligen ?

Zusammenfassung:

Quellordner mit den Originalen = C:\temp

Start des Zielordners der rekursive durchsucht werden müsste = C:\Ablage

Ergebnis:

Wenn die Datei vom Quellordner gleich der des Zielordners entspricht soll die Quelldatei die im Ziel überschreiben.

Content-Key: 158753

Url: https://administrator.de/contentid/158753

Printed on: April 19, 2024 at 23:04 o'clock

Member: Biber
Biber Jan 16, 2011 at 16:28:46 (UTC)
Goto Top
Moin urbanswelt,

willkommen im Forum.
Wenn ich die Fragestellung richtig lese, dann liegen die Copy-Quell-PDFs in einem Ordner (ohne Unterordnerstruktur).

Dann wäre der Ansatz so wie in folgender proof-of-concept-Zeile skizziert.
Demo am Cmd-Prompt, führendes ">" nicht mit eingeben
>for /r "C:\Ablage" %i in (*.pdf) do @if exist "c:\temp\%~nxi" @echo move c:\temp\%~nxi "%i"  

Wenn das Ergebnis plausibel aussieht, dann das "@echo" weglassen und das MOVE durchnudeln lassen.

Grüße
Biber
[Edit] Tippfehler überflüssiger Doppelpunkt entfernt (s.u.) [/Edit]
Member: urbanswelt
urbanswelt Jan 16, 2011 at 16:59:41 (UTC)
Goto Top
Hallo Biber,

genau so etwas habe ich als Ansatz gesucht !
Ich danke dir recht herzlich =)

Das einzigste was zu viel gewesen ist war bei "c:\temp:" der doppelpunkt hinter temp.
Der vollständigkeitshalber wäre es interessant zu Wissen, wie das ganze aussehen müsste wenn der Quell Ordner doch
mit mehreren Unterordnern kommen würde.

besten Dank
Gruss Urbanswelt
Member: Biber
Biber Jan 16, 2011 at 17:13:30 (UTC)
Goto Top
Moin urbanswelt,

den Tippfehler oben hab ich berichtigt.

Falls die möglichen Unterordner abzählbar wenige sind, dann würde ich so eine Verfeinerung wählen, hier mal als Batch :
for /r "C:\Ablage" %%i in (*.pdf) do (  
          if exist "c:\temp\%%~nxi" @echo move c:\temp\%%~nxi "%%i"  
          if exist "c:\temp\SubfolderA\%%~nxi" @echo move c:\temp\SubFolderA\%%~nxi "%%i"  
         if exist "c:\temp\SubfolderB\%%~nxi" @echo move c:\temp\SubFolderB\%%~nxi "%%i"  
 )

Natürlich lässt sich das Ganze auch mit zwei ineinander geschraubten FOR/R-Anweisungen völlig variabel halten... aber wenn das nicht sein muss, dann ist es so etwas lesbarer.

Grüße
Biber
Member: urbanswelt
urbanswelt Jan 16, 2011 at 17:28:00 (UTC)
Goto Top
Hallo Biber,

mit der Lesbarkeit hast du natürlich recht. Da meine Frage zu hundert Prozent von dir beantwortet wurde, werde ich diesen Beitrag nun als gelöst markieren.

Danke schön !

Gruss Urbanswelt
Member: bastla
bastla Jan 17, 2011 at 07:08:33 (UTC)
Goto Top
Hallo urbanswelt und Biber!

Wenn auch hundert Prozent nicht zu toppen ist face-wink, trotzdem noch ein Stichwort:
replace
Grüße
bastla
Member: Biber
Biber Jan 17, 2011 at 07:28:06 (UTC)
Goto Top
Moin bastla,

keine Ahnung, wie oft ich das "Replace"-Feature gedanklich vollkommen ausgeblendet habe... dabei ist es hier wirklich nützlich.

Damit reduziert sich die ganze Klamotte (falls es nur ein Quellverzeichnis gäbe) auf
replace C:\Temp\*.pdf C:\Ablage\  /s
...was naturlich noch les- und wartbarer ist als eine handgeschnitzte FOR/R-Rekursivabarbeitung.

Danke dir.
Grüße
Biber