Brauche Hilfe bei einem Batch
Liebes Forum,
kann mir bitte wer helfen?
Folgendes Problem: Ich möchte einen bestimmten Ordner der in mehreren Unterordnen vorkommt kopieren (mit Inhalt). Es soll aber die Ordnerstruktur der übergeordneten Verzeichnisse mit kopiert werden.
Nun habe ich mir einen Batch geschrieben, dieser kopiert auch die Daten aus dem bestimmten Ordner, allerdings nur ohne Ordnerstruktur (Verzeichnisstruktur).
So sieht der Batch aus:
@echo off
set /p "name=Ordnernamen eingeben:"
if not defined name goto :eof
for /f "delims=" %%a in ('dir /ad /b /s "%name%"') do xcopy /e /s "%%a" "c:\neu"
goto :eon
Kann mir bitte jemand helfen??
LG Karla
kann mir bitte wer helfen?
Folgendes Problem: Ich möchte einen bestimmten Ordner der in mehreren Unterordnen vorkommt kopieren (mit Inhalt). Es soll aber die Ordnerstruktur der übergeordneten Verzeichnisse mit kopiert werden.
Nun habe ich mir einen Batch geschrieben, dieser kopiert auch die Daten aus dem bestimmten Ordner, allerdings nur ohne Ordnerstruktur (Verzeichnisstruktur).
So sieht der Batch aus:
@echo off
set /p "name=Ordnernamen eingeben:"
if not defined name goto :eof
for /f "delims=" %%a in ('dir /ad /b /s "%name%"') do xcopy /e /s "%%a" "c:\neu"
goto :eon
Kann mir bitte jemand helfen??
LG Karla
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 250453
Url: https://administrator.de/contentid/250453
Ausgedruckt am: 26.11.2024 um 12:11 Uhr
8 Kommentare
Neuester Kommentar
würde die paramter T und E mit dazu nehm d.h
er kopiert alle unterverzeichnisse egal ob leer oder ned und erstellt die ordner struktur
also xcopy source daten ziel /E /T
/E Copy folders and subfolders, including Empty folders.
May be used to modify /T.
/T Create folder structure, but do not copy files. Do not
include empty folders or subfolders.
/T /E will include empty folders and subfolders.
er kopiert alle unterverzeichnisse egal ob leer oder ned und erstellt die ordner struktur
also xcopy source daten ziel /E /T
/E Copy folders and subfolders, including Empty folders.
May be used to modify /T.
/T Create folder structure, but do not copy files. Do not
include empty folders or subfolders.
/T /E will include empty folders and subfolders.
Hallo karla123!
Unter der Annahme, dass der Laufwerksbuchstabe ausgespart werden soll, könnte das etwa so gehen:
Wegen des "
Falls Du aus dem Laufwerksbuchstaben einen Bestandteil des Zielpfades machen möchtest, etwa so:
Grüße
bastla
Unter der Annahme, dass der Laufwerksbuchstabe ausgespart werden soll, könnte das etwa so gehen:
@echo off & setlocal
set "Ziel=c:\neu"
set /p "name=Ordnernamen eingeben: "
if not defined name goto :eof
for /f "delims=" %%a in ('dir /ad /b /s "%name%"') do call :ProcessDir "%%~fa"
goto :eof
:ProcessDir
for /f "tokens=1* delims=\" %%i in (%1) do set "Zielpfad=%Ziel%\%%j"
echo xcopy /e %1 "%Zielpfad%\"
goto :eof
echo
" in Zeile 10 werden die Kopier-Befehle (zum Testen) nur angezeigt ...Falls Du aus dem Laufwerksbuchstaben einen Bestandteil des Zielpfades machen möchtest, etwa so:
@echo off & setlocal
set "Ziel=c:\neu"
set /p "name=Ordnernamen eingeben: "
if not defined name goto :eof
for /f "delims=" %%a in ('dir /ad /b /s "%name%"') do set "Quellpfad=%%~fa" & call :ProcessDir
goto :eof
:ProcessDir
set "Zielpfad=%Ziel%\%Quellpfad::=%"
echo xcopy /e "%Quellpfad%" "%Zielpfad%\"
goto :eof
bastla
Hallo karla123!
Eleganter wäre übrigens bei Variante 1
als Zeile 9 gewesen ...
Grüße
bastla
wie meinst du das?
Wenn der Quellpfad zB "D:\Test\Dein Unterordner" lautet, würde sich als Zielpfad "c:\neu\D\Test\Dein Unterordner" ergeben - der Laufwerksbuchstabe ("D") wäre als Unterordner auch im Zielpfad abgebildet (womit sicher gestellt wäre, dass es keine gleichen Zielpfade geben kann, was ansonsten in diesem Beispiel etwa mit einem zusätzlichen Quellpfad "F:\Test\Dein Unterordner" der Fall wäre) ...Eleganter wäre übrigens bei Variante 1
set "Zielpfad=%Ziel%%~pnx1"
Grüße
bastla
Hallo karla123!
Freut mich, wenn's hilft ...
als Zeile 9 sollte das passen (hier enthält dann %%j den Rest-String nach dem zweiten Vorkommen des Trennzeichens "\") ...
Grüße
bastla
Freut mich, wenn's hilft ...
Wäre es eigentlich möglich den Namen des Root-Verzeichnisses beim Kopieren wegzulassen? Also mit dem ersten Unterordner anzufangen?
Da wäre dann wieder die ursprüngliche Version besser - mitfor /f "tokens=2* delims=\" %%i in (%1) do set "Zielpfad=%Ziel%\%%j"
Grüße
bastla