red-ed
Goto Top

Mit cmd nur Unterordner und dessen Inhalt kopieren

Guten Tag,

ich bin schon öfters auf eurer Seite fündig geworden, nun habe ich aber ein Problem das bestimmt ganz einfach zu lösen ist, nur komme ich nicht darauf.

Und nun habe ich mich extra angemeldet.

Ich kopiere von einem Client einen bestimmten Ordner auf den Server.
Hierzu verbinde ich das Clientverzeichnis mit einem Netzlaufwerk.

In diesem Laufwerk werden regelmäßig neue Daten erstellt.
Diese Daten werden dann von meinem Script in Unterordner verschoben (1404: für Jahr und Monat der Erstellung).
Danach werden dann alle Ordner auf den Server kopiert, wobei nur neu und sich geänderte Daten kopiert werden.

Mein Problem ist nun, das wenn sich nach dem verschieben der Daten in die Unterordner eine neue Datei in dem Hauptordner angelegt wird diese auch auf den Server in den Hauptordner kopiert wird.
Das möchte ich nicht, da diese Datei beim nächsten Batchaufruf ja einsortiert wird und dann in dem Unterordner kopiert wird.

Ich versuche das mal zu verdeutlichen.
B: = Verbundenes Laufwerk auf dem Client

B:\Daten\
B:\Daten\1401\
B:\Daten\1402\
B:\Daten\1403\
B:\Daten\1404\
B:\Daten\neuedatei.txt

Im Ziel soll nur die Ordnungsstruktur und dessen Inhalt der Unterordner vorhanden sein

D:\Daten\
D:\Daten\1401\
D:\Daten\1402\
D:\Daten\1403\
D:\Daten\1404\

in den jeweiligen Monatsordnern ist dann der Inhalt vorhanden.
da jeden Monat automatisch ein neuer Ordner hinzukommt, kann ich nicht mit festen Namen arbeiten.
Einen Sync kann ich auch nicht nehmen da auf dem Client hin und wieder Daten gelöscht werden, die aber auf dem Server benötigt werden.

Ich hoffe ihr könnt mir da helfen.

Gruß
Red-Ed

Content-ID: 234851

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

Ausgedruckt am: 22.11.2024 um 18:11 Uhr

Sheogorath
Sheogorath 08.04.2014 um 11:08:20 Uhr
Goto Top
Moin,

vielleicht keine tolle Lösung, aber sie funktioniert, wenn du keine größeren Datenmengen verschieben willst.
robocopy B:\test %temp%\test *.* /S /E
del %temp%\test\*.* /q
robocopy %temp%\test B:\test2 *.* /S /E

Gruß
Chris
SaschaRD
Lösung SaschaRD 08.04.2014 aktualisiert um 15:12:49 Uhr
Goto Top
Hallo Red-Ed,
set quelle="B:\Daten"  
set ZIEL="d:\daten"  
for /f "delims=\ tokens=1" %%i in ('dir %QUELLE% /b /ad') do xcopy /S/E %QUELLE%\%%i %ZIEL%\%%i\  

siehe auch Link im Forum

Gruß, Sascha
red-ed
red-ed 08.04.2014 aktualisiert um 12:04:06 Uhr
Goto Top
Kannst du mir den befehl auch mit robocopy geben?
sehe ich das richtig das er eine schleife erstellt und das kopieren dann für jeden Unterordner macht?

Gruß
Red-Ed

PS: vielen Dank für die schnelle antwort
red-ed
red-ed 08.04.2014 um 12:06:01 Uhr
Goto Top
Vielen Dank für den Vorschlag, aber hilft nur bedingt, da ich ja nicht will das die Daten gelöscht werden die direkt im Verzeichnis liegen. sondern lediglich beim nächsten batchaufruf verschoben werden.
Aber Sascha ist da denke ich auf dem Richtigen weg.

Gruß
Red-Ed
red-ed
red-ed 08.04.2014, aktualisiert am 30.03.2023 um 00:18:12 Uhr
Goto Top
Zitat von @SaschaRD:

Hallo Red-Ed,
> set quelle="B:\Daten"  
> set ZIEL="d:\daten"  
> for /f "delims=\ tokens=1" %%i in ('dir %QUELLE% /b /ad') do xcopy /S/E %QUELLE%\%%i %ZIEL%\%%i\  

siehe auch Link im Forum

Gruß, Sascha
Ich musste noch ein wenig verändern, das nur noch nicht bestehende Dateien kopiert werden oder eben nur neuerem, aber ansonsten perfekt.

Gruß
Red-Ed