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-Key: 234851

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

Printed on: April 18, 2024 at 02:04 o'clock

Member: Sheogorath
Sheogorath Apr 08, 2014 at 09:08:20 (UTC)
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
Member: SaschaRD
Solution SaschaRD Apr 08, 2014 updated at 13:12:49 (UTC)
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
Member: red-ed
red-ed Apr 08, 2014 updated at 10:04:06 (UTC)
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
Member: red-ed
red-ed Apr 08, 2014 at 10:06:01 (UTC)
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
Member: red-ed
red-ed Apr 08, 2014, updated at Mar 29, 2023 at 22:18:12 (UTC)
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