touro411
Goto Top

Unterordner mit batch kopieren inkl. Ordner höherer Ebenen, diese allerdings ohne den Inhalt

Hallo,

habe ein "Batch" Problem, mit welchem ich nicht weiter komme....

Was ich gerne möchte:

Folgende Ordnerstrukturen habe ich:
D:/dateien/<<verschiedene ordnernamen>>/datenblatt
D:/dateien/<<verschiedene ordnernamen>>/datenblatt
D:/dateien/<<verschiedene ordnernamen>>/datenblatt
D:/dateien/<<verschiedene ordnernamen>>/datenblatt
D:/dateien/<<verschiedene ordnernamen>>/datenblatt
D:/dateien/<<verschiedene ordnernamen>>/datenblatt
.
.
.
Diese 6 Ordner (jeweils datenblatt) möchte ich nach E:/archive kopieren mit dem gesamten Inhalt von den 6 Ordnern.

Jetzt kommt der Punkt, an welchem ich hänge:

Ich möchte alle Überordner von den 6 Ordnern "datenblatt" mit kopieren, allerdings ohne Inhalt, so dass man in E:/archive sieht, von wo der Ordner herkam.

Z.B.
E:/archive/<<verschiedene ordnernamen>>/datenblatt
E:/archive/<<verschiedene ordnernamen>>/datenblatt
E:/archive/<<verschiedene ordnernamen>>/datenblatt
E:/archive/<<verschiedene ordnernamen>>/datenblatt
E:/archive/<<verschiedene ordnernamen>>/datenblatt
E:/archive/<<verschiedene ordnernamen>>/datenblatt
Gibt es da eine Möglichkeit?

Danke

Content-Key: 193649

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

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

Member: bastla
bastla Nov 02, 2012 at 17:32:04 (UTC)
Goto Top
Hallo touro411!

Sollte in etwa so gehen:
@echo off & setlocal
set "Quelle=D:\dateien"  
set "Ordner=datenblatt"  
set "Ziel=E:\archive"  

for /f "delims=" %%i in ('dir /s/b/ad "%Quelle%\%Ordner%"') do set "Pfad=%%~fi" & call :ProcessDir "%%i"  
goto :eof

:ProcessDir
call set "RelPfad=%%Pfad:%Quelle%\=%%"  
xcopy %1 "%Ziel%\%RelPfad%">nul  
goto :eof
Einschränkung: Es werden nur "datenblatt"-Ordner kopiert, die Dateien enthalten ...

Grüße
bastla
Member: touro411
touro411 Nov 02, 2012 at 17:45:42 (UTC)
Goto Top
Hallo,

danke für die schnelle Antwort.

Ich hatte mich in meinem Post falsch ausgedrückt... Im prinzip ist es das, was ich möchte...

Meine Quelle sieht so aus:

D:/dateien/<<verschiedene ordnernamen1>>/<<verschiedene ordnernamen2>>/datenblatt
D:/dateien/<<verschiedene ordnernamen1>>/<<verschiedene ordnernamen2>>/datenblatt
D:/dateien/<<verschiedene ordnernamen1>>/<<verschiedene ordnernamen2>>/datenblatt
D:/dateien/<<verschiedene ordnernamen1>>/<<verschiedene ordnernamen2>>/datenblatt
D:/dateien/<<verschiedene ordnernamen1>>/<<verschiedene ordnernamen2>>/datenblatt
D:/dateien/<<verschiedene ordnernamen1>>/<<verschiedene ordnernamen2>>/datenblatt
.
.
.

Mein Ziel, so wie oben beschrieben..

<<verschiedene ordnernamen1>> und <<verschiedene ordnernamen2>> haben immer unterschiedliche Namen, Ordner Datenblatt ist aber immer auf Ebene 5 und heißt immer datenblatt.

Man müsste für die Ebenen eine Variable einsetzen?!?!
Member: bastla
bastla Nov 02, 2012 updated at 19:48:29 (UTC)
Goto Top
Hallo touro411!

Soferne es nicht noch mehr Ordner namens "Datenblatt" unterhalb von "D:\Dateien" gibt, sehe ich das Problem nicht ...

Welches Ergebnis hat denn Dein Test mit meinem Ansatz von oben erbracht? Wenn Du zum Testen übrigens die Zeile 11 durch
echo xcopy %1 "%Ziel%\%RelPfad%"
ersetzt, wird nicht tatsächlich kopiert, sondern es werden nur die Kopierbefehle angezeigt. Falls Du nicht aus einer CMD-Shell testest (was Du solltest), kannst Du noch zwischen Zeile 6 und 7 eine Zeile mit
pause
einfügen - dann kannst Du die Ausgabe in Ruhe ansehen ...

Grüße
bastla