timotheus123
Goto Top

Batch-Job - Ordner inkl. Unterordner kopieren und gleichzeitig umbenennen

Hallo in die Runde,

leider verzweifele ich an einem Batch-Skript, was einfach nicht das tut was es soll. Vielleicht kann mir ja einer der Batch-Profis einen Tipp oder Ansatz geben, was ich falsch mache...

Was ich möchte:
Alle Ordner unterhalb c:\bilder_temp inkl. deren Unterverzeichnisse mit geändertem Verzeichnisnamen (Präfix: 01#) nach p:\content kopieren.
Die enthaltenen Dateien sollen natürlich mit kopiert werden eine Umbenennung soll hier aber nicht erfolgen.

Was ich bisher habe:
set "temp=c:\bilder_temp"
set "ziel1=p:\content"
FOR /F "tokens=*" %%i in ('Dir /AD /B %temp%') do xcopy "%temp%\%%i" "%ziel1%\01#%%i" /D /E /Y /I

Leider werden hierbei nicht die Unterordner mit umbenannt, sprich es fehlt der Präfix. Vermutlich ist es doch komplizierter als ich dachte.

Wichtig ist halt, das die Dateien nicht erst nach dem xcopy umbenannt werden, da im Zielordner bereits einige der zu kopierenden Ordner (mit dem Präfix) enthalten sein könnten. Sonst würde ich ja doppelt kopieren bzw. hätte dann bei einem späteren rename probleme weil der ordner bereits existiert.

Ich hoffe Ihr könnt mir weiterhelfen.

Liebe Grüße
Timo

Content-Key: 173434

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

Ausgedruckt am: 28.03.2024 um 15:03 Uhr

Mitglied: Skyemugen
Skyemugen 21.09.2011 um 09:53:12 Uhr
Goto Top
Aloha,

logisch werden die Unterordner nicht mit umbenannt.

Was macht denn dein Befehl?
Listet alle Verzeichnisse der ersten Ebene in %temp% auf und kopiert diese Verzeichnisse nach %Ziel1% mit dem Präfix. Punkt, mehr nicht. Die Unterordner werden umbenennungstechnisch gar nicht angefasst, da xcopy nun einmal die Hauptverzeichnisse komplett kopiert und dabei nur der Hauptverzeichnissname angefasst wird.

Nun meine Frage, ob die (Unter)Verzeichnisse nicht auch erst umbenannt und dann verschoben / kopiert werden können, wobei, wenn die Antwort Ja lauten würde, ich dich auf die Suchfunktion verweisen würde, da beim ständigen Durchkauen derselben Materie unsere Zähne abstumpfen.

greetz André

edit:
Wobei man natürlich auch nach deinem groben xcopy die Umbenennung dort vollziehen könnte, da das Hauptverzeichnis bereits einmalig ist, kann es auch keine Doppelungen unterhalb geben, wobei ich mich dann wieder frage, wozu noch die Unterverzeichnisse umbenennen?
Mitglied: timotheus123
timotheus123 21.09.2011 um 10:04:53 Uhr
Goto Top
Zitat von @Skyemugen:
Aloha,

logisch werden die Unterordner nicht mit umbenannt.

Was macht denn dein Befehl?
Listet alle Verzeichnisse der ersten Ebene in %temp% auf und kopiert diese Verzeichnisse nach %Ziel1% mit dem Präfix. Punkt,
mehr nicht. Die Unterordner werden umbenennungstechnisch gar nicht angefasst, da xcopy nun einmal die Hauptverzeichnisse komplett
kopiert und dabei nur der Hauptverzeichnissname angefasst wird.

Nun meine Frage, ob die (Unter)Verzeichnisse nicht auch erst umbenannt und dann verschoben / kopiert werden können, wobei,
wenn die Antwort Ja lauten würde, ich dich auf die Suchfunktion verweisen würde, da beim ständigen Durchkauen
derselben Materie unsere Zähne abstumpfen.

greetz André


Hallo André,

sorry bin halt was Batch Skripte angeht ziemlicher Laie, aber ich habe große Hoffnung das Du mir evtl. weiterhelfen kannst.

Nein, also die (Unter)Verzeichnisse dürfen in dem Temp Verzeichnis nicht vorab umbenannt und dann kopiert bzw. verschoben werden, die müssen exakt so bleiben wie sie sind, weil sonst an anderer Stelle Probleme auftauchen.

Sonst hätte ich natürlich über die Forensuche schon längst die Antwort gefunden und würde hier nicht nerven face-smile

Hättest Du evtl. eine Idee wie man das lösen kann?

Vielen Dank
Timo
Mitglied: Skyemugen
Skyemugen 21.09.2011 um 10:15:32 Uhr
Goto Top
Aloha,

Hättest Du evtl. eine Idee wie man das lösen kann?

hast du auch mein edit (was noch lange vor deinem Kommentar dastand) oben gelesen? face-wink

Wobei mich deine Aussage verwirrt:

Wichtig ist halt, das die Dateien nicht erst nach dem xcopy umbenannt werden, da im Zielordner bereits einige der zu kopierenden Ordner (mit dem Präfix) enthalten sein könnten.

Wenn bereits Verzeichnisse mit 01# vorhanden sein könnten, warum willst du dann wieder Verzeichnisse mit 01# benennen, wenn du Doppelungen vermeiden willst *grübel*.

Eventuell interpretiere ich das auch falsch, darum mache ich mal ein Beispiel zur Nachfrage:

%temp%\Ordner_1\Unterordner_1\Unterunterordner_1 soll jetzt kopiert werden und dann nach

%Ziel1%\01#Ordner_1\01#Unterordner_1\01#Unterunterordner_1 kopiert/umbenannt werden (technisch gesehen, wird bei xcopy ja nicht umbenannt), soweit klar aber

existiert im Ziel jetzt bereits ein Verzeichnis

%Ziel1%\Ordner_1\Unterordner_1\Unterunterordner_1, genügt es doch, wenn man die kopierte Struktur so lässt wie bei dir jetzt mit deinem Code

%Ziel1%\01#Ordner_1\Unterordner_1\Unterunterordner_1 oder verstehe ich hier etwas falsch?

greetz André
Mitglied: timotheus123
timotheus123 21.09.2011 um 10:27:20 Uhr
Goto Top
Zitat von @Skyemugen:
Aloha,

> Hättest Du evtl. eine Idee wie man das lösen kann?

hast du auch mein edit (was noch lange vor deinem Kommentar dastand) oben gelesen? face-wink

Wobei mich deine Aussage verwirrt:

> Wichtig ist halt, das die Dateien nicht erst nach dem xcopy umbenannt werden, da im Zielordner bereits einige der zu
kopierenden Ordner (mit dem Präfix) enthalten sein könnten.

Wenn bereits Verzeichnisse mit 01# vorhanden sein könnten, warum willst du dann wieder Verzeichnisse mit 01#
benennen, wenn du Doppelungen vermeiden willst *grübel*.

Eventuell interpretiere ich das auch falsch, darum mache ich mal ein Beispiel zur Nachfrage:

%temp%\Ordner_1\Unterordner_1\Unterunterordner_1 soll jetzt kopiert werden und dann nach

%Ziel1%\01#Ordner_1\01#Unterordner_1\01#Unterunterordner_1 kopiert/umbenannt werden (technisch gesehen, wird bei xcopy ja
nicht umbenannt), soweit klar aber

existiert im Ziel jetzt bereits ein Verzeichnis

%Ziel1%\Ordner_1\Unterordner_1\Unterunterordner_1, genügt es doch, wenn man die kopierte Struktur so lässt wie bei
dir jetzt mit deinem Code

%Ziel1%\01#Ordner_1\Unterordner_1\Unterunterordner_1 oder verstehe ich hier etwas falsch?

greetz André


Hi Andre,

erstmal DANKE für Deine Geduld.

Also die 01# (der Prefix vor dem eigentlichen Ordnernamen) ist gedacht als Sortierschlüssel. In den jeweiligen Unterverzeichnissen im Ziel existieren mitunter schon weitere Unterordner mit anderem Prefix z.B. 02#. Das ganze ist deswegen so gelöst weil es sich um Bilderordner handelt die in einer bestimmten Reihenfolge (sortier nach Prefix) von einem anderen System ausgelesen werden sollen, das zwingend diesen Prefix voraussetzt. Daher müssen alle Ordner die ich auf das Ziel kopiere diesen Prefix erhalten.

Viele Grüße
Timo
Mitglied: Skyemugen
Skyemugen 21.09.2011 um 10:47:14 Uhr
Goto Top
Aloha Timo,

aha also doch mein edit
Wobei man natürlich auch nach deinem groben xcopy die Umbenennung dort vollziehen könnte, da das Hauptverzeichnis bereits einmalig ist,
da du ja schreibst
im Ziel existieren mitunter schon weitere Unterordner mit anderem Prefix

Da bleibt mir nur noch die Nachfrage: Würde außer im Prefix das Rautesymbol auch in anderen Verzeichnisnamensbereichen vorhanden sein? Wenn nicht, ließe sich die Umbenennung in der Tat einfach nach dem xcopy vollziehen, indem man die Unterordner von unten angefangen umbenennt aber dabei jene mit # im Namen ignoriert (dazu hatten wir erst etwas am 8. August 2011 etwas im Forum).

greetz André

P.S.: Zitiere bitte nicht immer gesamte Postings, danke face-wink
Mitglied: timotheus123
timotheus123 21.09.2011 um 11:09:37 Uhr
Goto Top
Hi André,

nein die Raute ist nur im Prefix vorhanden.
Ich habe mir zwar gerade den Beitrag vom 08.08. durchgelesen, steige aber ehrlich gesagt nicht durch.
Vor allem habe ich die Frage, was passiert mit neuen Ordnern, wenn ein Ordner mit #01 Prefix im Ziel bereits existiert.

z.B. c:\temp\ordnername soll nach p:\content\#01ordnername kopiert werden.
Dort existiert aber schon p:\content\#01ordnername
Wenn ich aber trotzdem neuen Dateien/Unterordner in meinem Order in der Quelle habe, die zum Ziel in den passenden #01 (Unter-)ordner kopiert werden müssen/sollen, wie stelle ich das dann an?

Hast Du einen Codeschnipsel für den xcopy Ansatz?

Beste Grüße
Timo
Mitglied: Skyemugen
Skyemugen 21.09.2011 um 11:27:35 Uhr
Goto Top
Aloha Timo, *mampf*

hm, das ist kein Problem, xcopy kopiert alles ins Ziel, wenn das Ziel auch schon existiert - was vielmehr (für meine momentane Vorgehensweise) stören würde, wenn ein Unterordner bereits mit Prefix vorhanden ist und da ich das Gefühl nicht loswerde, dass dies hier vorkommen kann *mampf* muss ich mir einen anderen Weg ausdenken *mampf*

greetz André

edit:

Um dir noch einmal meinen bisherigen Gedankengang *mampf* darzustellen:

xcopy nach %Ziel1%\01#Hauptordner und dann im 01#Hauptordner alle Verzeichnisse auflisten außer mit # im Namen, bis zur untersten Ebene ackern wie in Zweites Zeichen bei Ordnern und Unterordner ersetzten durch Batch, umbenennen bis zur obersten Ebene. Wenn allerdings dann auch schon vorhandene Unterordner mit dem Prefix *mampf* vorhanden sind, wird das doch so einfach eben nichts ^_^ (und dann weiß ich momentan auch nicht einfach weiter und werde mich wieder meiner Konstruktion widmen *gg*)