Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

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

Frage Entwicklung Batch & Shell

Mitglied: timotheus123

timotheus123 (Level 1) - Jetzt verbinden

21.09.2011 um 09:31 Uhr, 4055 Aufrufe, 7 Kommentare

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
Mitglied: Skyemugen
21.09.2011 um 09:53 Uhr
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?
Bitte warten ..
Mitglied: timotheus123
21.09.2011 um 10:04 Uhr
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

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

Vielen Dank
Timo
Bitte warten ..
Mitglied: Skyemugen
21.09.2011 um 10:15 Uhr
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?

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é
Bitte warten ..
Mitglied: timotheus123
21.09.2011 um 10:27 Uhr
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?

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
Bitte warten ..
Mitglied: Skyemugen
21.09.2011 um 10:47 Uhr
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
Bitte warten ..
Mitglied: timotheus123
21.09.2011 um 11:09 Uhr
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
Bitte warten ..
Mitglied: Skyemugen
21.09.2011 um 11:27 Uhr
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 diesem Thread, 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*)
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Ordner inkl. Unterordner nach Dateien überprüfen (4)

Frage von belfry zum Thema Batch & Shell ...

Windows Server
gelöst Datei per Batch in Ordner mit sich ständig änderndem Namen kopieren (3)

Frage von Drxrey zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...