gelöst 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
8 Antworten
- LÖSUNG chaos2go schreibt am 29.09.2014 um 15:06:32 Uhr
- LÖSUNG karla123 schreibt am 29.09.2014 um 15:19:36 Uhr
- LÖSUNG bastla schreibt am 29.09.2014 um 15:31:57 Uhr
- LÖSUNG karla123 schreibt am 29.09.2014 um 16:10:04 Uhr
- LÖSUNG bastla schreibt am 29.09.2014 um 17:17:05 Uhr
- LÖSUNG karla123 schreibt am 30.09.2014 um 13:52:32 Uhr
- LÖSUNG bastla schreibt am 01.10.2014 um 18:28:45 Uhr
- LÖSUNG karla123 schreibt am 02.10.2014 um 09:21:29 Uhr
- LÖSUNG bastla schreibt am 01.10.2014 um 18:28:45 Uhr
- LÖSUNG karla123 schreibt am 30.09.2014 um 13:52:32 Uhr
- LÖSUNG bastla schreibt am 29.09.2014 um 17:17:05 Uhr
LÖSUNG 29.09.2014, aktualisiert um 15:07 Uhr
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.
LÖSUNG 29.09.2014 um 15:19 Uhr
Hallo chaos2go
das habe ich auch schon versucht, nur dann werden die möglichen Unterordner in dem ausgewählten Ordner mitkopiert aber keine Daten und die übergeordnete Struktur ist auch nicht vorhanden?!
das habe ich auch schon versucht, nur dann werden die möglichen Unterordner in dem ausgewählten Ordner mitkopiert aber keine Daten und die übergeordnete Struktur ist auch nicht vorhanden?!
LÖSUNG 29.09.2014, aktualisiert 01.10.2014
Hallo karla123!
Unter der Annahme, dass der Laufwerksbuchstabe ausgespart werden soll, könnte das etwa so gehen:
Wegen des "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:
Grüße
bastla
Unter der Annahme, dass der Laufwerksbuchstabe ausgespart werden soll, könnte das etwa so gehen:
01.
@echo off & setlocal
02.
set "Ziel=c:\neu"
03.
set /p "name=Ordnernamen eingeben: "
04.
if not defined name goto :eof
05.
for /f "delims=" %%a in ('dir /ad /b /s "%name%"') do call :ProcessDir "%%~fa"
06.
goto :eof
07.
08.
:ProcessDir
09.
for /f "tokens=1* delims=\" %%i in (%1) do set "Zielpfad=%Ziel%\%%j"
10.
echo xcopy /e %1 "%Zielpfad%\"
11.
goto :eof
Falls Du aus dem Laufwerksbuchstaben einen Bestandteil des Zielpfades machen möchtest, etwa so:
01.
@echo off & setlocal
02.
set "Ziel=c:\neu"
03.
set /p "name=Ordnernamen eingeben: "
04.
if not defined name goto :eof
05.
for /f "delims=" %%a in ('dir /ad /b /s "%name%"') do set "Quellpfad=%%~fa" & call :ProcessDir
06.
goto :eof
07.
08.
:ProcessDir
09.
set "Zielpfad=%Ziel%\%Quellpfad::=%"
10.
echo xcopy /e "%Quellpfad%" "%Zielpfad%\"
11.
goto :eof
bastla
LÖSUNG 29.09.2014 um 16:10 Uhr
Hallo bastla,
das ist ja genial!!! Der erste Vorschlag funktioniert perfekt!!!!
Eine Frage zu dem zweiten Vorschlag: wie meinst du das? Das habe ich nicht verstanden.
Vielen Dank erst einmal
das ist ja genial!!! Der erste Vorschlag funktioniert perfekt!!!!
Eine Frage zu dem zweiten Vorschlag: wie meinst du das? Das habe ich nicht verstanden.
Vielen Dank erst einmal
LÖSUNG 29.09.2014, aktualisiert 01.10.2014
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
LÖSUNG 30.09.2014 um 13:52 Uhr
Hallo bastla,
ach so. Ist jetzt klar!
Eine Frage hätte ich doch noch: Wäre es eigentlich möglich den Namen des Root-Verzeichnisses beim Kopieren wegzulassen? Also mit dem ersten Unterordner anzufangen?
Ansonsten möchte ich mich für deine tolle Hilfe ganz herzlich bei dir bedanken!!!!
LG
Karla123
ach so. Ist jetzt klar!
Eine Frage hätte ich doch noch: Wäre es eigentlich möglich den Namen des Root-Verzeichnisses beim Kopieren wegzulassen? Also mit dem ersten Unterordner anzufangen?
Ansonsten möchte ich mich für deine tolle Hilfe ganz herzlich bei dir bedanken!!!!
LG
Karla123
LÖSUNG 01.10.2014, aktualisiert 02.10.2014
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
LÖSUNG 02.10.2014 um 09:21 Uhr
Hallo bastla,
ich freue mich ja so!!! Das hat wunderbar geklappt!!!
Nochmals vielen, vielen Dank!!!!
Lieben Gruß von
Karla
ich freue mich ja so!!! Das hat wunderbar geklappt!!!
Nochmals vielen, vielen Dank!!!!
Lieben Gruß von
Karla
Ähnliche Inhalte
Neue Wissensbeiträge
Heiß diskutierte Inhalte