touro411

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
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 193649

Url: https://administrator.de/forum/unterordner-mit-batch-kopieren-inkl-ordner-hoeherer-ebenen-diese-allerdings-ohne-den-inhalt-193649.html

Ausgedruckt am: 18.07.2025 um 08:07 Uhr

bastla
bastla 02.11.2012 um 18:32:04 Uhr
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
touro411
touro411 02.11.2012 um 18:45:42 Uhr
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?!?!
bastla
bastla 02.11.2012 aktualisiert um 20:48:29 Uhr
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