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-ID: 193649

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

Ausgedruckt am: 25.11.2024 um 05:11 Uhr

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