kayes73
Goto Top

Kopieren von Daten per bat

Hallo zusammen,

ich hoffe das meine Frage hier nicht schon hundertmal in verschiedensten Variationen gestellt wurde. Es geht um folgendes:

unter D liegt ein Verzeichnis "2015" mit vielen Unterordnern: "15001, 15002, 15003 usw"

unter E liegt auch ein Verzeichnis "2015" mit denselben Unterordnern "15001, 15002 usw." und einem zusätzlichen Unterordner Berechnungen

ich will die Daten von d:/2015/15001/* nach e:/2015/15001/Berechnungen/* kopieren. Für das gesamte übergeordnete Verzeichnis 2015.
Wie ist dies per batch möglich?

Content-ID: 275338

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

Ausgedruckt am: 22.11.2024 um 20:11 Uhr

holli.zimmi
holli.zimmi 22.06.2015 um 14:50:04 Uhr
Goto Top
Hi,

willst Du deine Batch mit Parametern aufrufen?

Gruss

Holli
reiser
reiser 22.06.2015 um 15:00:10 Uhr
Goto Top
Soll die Struktur der Unterordner behalten werden??

Dann

xcopy d:/2015/15001/ e:/2015/15001/Berechnungen /s


Oder soll d:/2015/15001/* in e:/2015/15001/Berechnungen/* aber d:/2015/15002/* in e:/2015/15002/Berechnungen/* ??
Oder sollen alle Dateien im Ordner e:/2015/15001/Berechnungen/ egal aus welchem Verzeichnis aus d:/2015 sie kommen ??

Gruß reiser
kayes73
kayes73 22.06.2015 um 15:04:05 Uhr
Goto Top
Zitat von @reiser:

Soll die Struktur der Unterordner behalten werden??

Dann

xcopy d:/2015/15001/ e:/2015/15001/Berechnungen /s


Oder soll d:/2015/15001/* in e:/2015/15001/Berechnungen/* aber d:/2015/15002/* in e:/2015/15002/Berechnungen/* ??

Genau, alle Daten/Ordner unterhalb 15001 soll in 15001/Berechnungen, alles unterhalb 15002 in 15002/Berechnungen, 15003 in 15003/Berechnungen usw.
bastla
bastla 22.06.2015 aktualisiert um 17:45:26 Uhr
Goto Top
Hallo kayes73 und willkommen im Forum!

Wenn Du eine "for /d"-Schleife verwendest, kannst Du alle Unterordner von 2015 durchgehen - also (ungetestet) in etwa:
for /d %%i in (D:\2015\*) do xcopy /e "%%i" "E:\2015\%%~nxi\Berechnungen\"
Wenn nur die mit "15" beginnenden Unterordner von "D:\2015" verarbeitet werden sollen:
for /d %%i in (D:\2015\15*) do xcopy /e "%%i" "E:\2015\%%~nxi\Berechnungen\"
und wenn nur kopiert werden soll, wenn es den entsprechenden Zielordner (etwa "E:\2015\15055") schon gibt:
for /d %%i in (D:\2015\15*) do if exist "E:\2015\%~nxi" xcopy /e "%%i" "E:\2015\%%~nxi\Berechnungen\"
Ggf könntest Du noch die "xcopy"-Optionen "/d" und "/y" (alles zusammen dann "/dey") oder bei Bedarf weitere wie "/h", "/k" und "/r" verwenden ...

Grüße
bastla
kayes73
kayes73 24.06.2015 um 11:13:01 Uhr
Goto Top
Funktioniert soweit ganz gut. Leider hatte ich in den Voraussetzungen noch etwas vergessen zu erwähnen.
Der Ursprungsordner hat die Bezeichnung 2015/15001 Müller und der Zielordner den Pfad 2015/15001/Berechnungen und als 2. Beispiel der Ursprungsordner 2015/15002 Mustermann und der Zielordner den Pfad 2015/15002/Berechnungen.

Kann ich die Namen der Ursprungsordner in der Syntax quasi ausklammern?
bastla
Lösung bastla 25.06.2015, aktualisiert am 30.06.2015 um 13:58:07 Uhr
Goto Top
Hallo kayes73!

Wenn sich Deine Anforderung auf "verwende als Zielordner den Teil des Quellordnernamens bis zum ersten Leerzeichen und darunter als weitere Ordnerebene 'Berechnungen'" umformulieren lässt, dann etwa so;
for /d %%i in (D:\2015\*) do for /f %%a in ("%%~nxi") do echo xcopy /e "%%i" "E:\2015\%%a\Berechnungen\"
- das "echo vor dem "xcopy" dient dem gefahrlosen Testen, da so die Kopierbefehle (mit den entsprechenden Pfaden) nur angezeigt werden. Soferne Du den Batch per Doppelklick startest, müsstest Du noch eine weitere Zeile
pause
hinzufügen, damit Du die Ausgaben auch lesen kannst (es wäre grundsätzlich während der Entwicklungsphase sinnvoll, einen Batch aus einem CMD-Fenster heraus zu starten).

Wenn das Ergebnis vernünftig aussieht, das "echo" einfach weglassen ...

Grüße
bastla
kayes73
kayes73 29.06.2015 um 10:05:55 Uhr
Goto Top
Hallo!

Wenn ich das Script so nutze kopiert er mir nur den Ordner zusätzlich in den Zielpfad. Sieht also so aus:

15001
15001 Müller
15002
15002 Mustermann

Hat also nicht funktioniert.
bastla
bastla 29.06.2015 um 16:41:54 Uhr
Goto Top
Hallo kayes73!

Sorry - kann ich nicht nachvollziehen ...

Ein Test mit den 2 von Dir genannten Ordner-Beispielen sieht bei mir so aus:
D:\TEMP>tree D:\2015
Auflistung der Ordnerpfade für Volume TestVol
Volumenummer: 1234-5678
D:\2015
+---15001 Müller
+---15002 Mustermann

D:\TEMP>type kopieren.cmd
@echo off & setlocal
for /d %%i in (D:\2015\*) do for /f %%a in ("%%~nxi") do echo xcopy /e "%%i" "E:
\2015\%%a\Berechnungen\"

D:\TEMP>kopieren
xcopy /e "D:\2015\15001 Müller" "E:\2015\15001\Berechnungen\"
xcopy /e "D:\2015\15002 Mustermann" "E:\2015\15002\Berechnungen\"

D:\TEMP>
Grüße
bastla
kayes73
kayes73 30.06.2015 um 13:58:00 Uhr
Goto Top
Tut mir leid, bastla. Du hattest natürlich recht.

Dein Skript funktioniert. Bei der Anpassung an meine Testumgebung muss ich irgendetwas falsch gemacht haben.

Vielen Dank für deine Ratschläge!!!