Verschieben von Dateien in mehren Ordner
Hallo und guten Tag zusammen,
ich bin auf der Suche nach einer zuverlässige Lösung, die Dateien von einen Ordner in zwei andere Ordner verschiebt. Hat jemand Erfahrung von euch?
Info: der Quell Ordner bekommt kontinuierlich neue Dateien, diese sollen (eventuell mit Zeitintervall) in zwei andere Ordner verschoben werden.
Macht es Sinn zu kopieren und anschließen den Inhalt vom Quell Ordner zu löschen?
Gruß
ich bin auf der Suche nach einer zuverlässige Lösung, die Dateien von einen Ordner in zwei andere Ordner verschiebt. Hat jemand Erfahrung von euch?
Info: der Quell Ordner bekommt kontinuierlich neue Dateien, diese sollen (eventuell mit Zeitintervall) in zwei andere Ordner verschoben werden.
Macht es Sinn zu kopieren und anschließen den Inhalt vom Quell Ordner zu löschen?
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 388160
Url: https://administrator.de/forum/verschieben-von-dateien-in-mehren-ordner-388160.html
Ausgedruckt am: 22.12.2024 um 15:12 Uhr
14 Kommentare
Neuester Kommentar
Ist nicht so trivial. Wenn Dateien automatisch abgelegt werden, kann (und wird) es passieren dass die Datei schon angelegt ist, der Inhalt aber noch nicht fertig geschrieben wurde. Wenn du so eine Datei verschieben willst, crasht es. Mindestens hast du Datenverlust, es sei denn, die Datei ist vom schreibenden Programm gelockt (aber darauf hast du im Zweifelsfall keinen Einfluss). Einer unserer Admins hat das so gelöst, dass er beobachtet hat, wie lange es dauert, bis die Dateien fertig geschrieben wurden. Das kann von Dateigröße, Datenträger, Übertragungsgeschwindigkeit, und und und ... abhängen. Darauf hat er noch mal ordentlich Sicherheit draufgerechnet und das als Intervall angenommen. Dateien die beim vorherigen Suchen gefunden wurden, werden verschoben. Neu hinzu gekommene werden in einem Array gesichert und beim nächsten Intervall verschoben.
Steffen
Steffen
Nein. Einer unserer lokalen Firmenadmins ... Nicht hier im Forum.
Oder kannst du mir was zu Verfügung stellen?
Ich kann es auch nur selbst schreiben. Versuchs doch erst mal und komme zurück, wenn du Probleme hast.
Hallo
Wieso sollten beim Kopieren mit robocopy Dateien verloren gehen? Wenn sie noch geöffnet sind, können sie nicht kopiert werden, deswegen verschwinden die Dateien doch nicht??
Edit: Oder dann halt vielleicht, alle Dateien, ausser die jüngsten 2 kopieren?
Gruss
Genau das ist das Problem. Ich habe es mit robocopy versucht, dabei sind Dateien verschwunden.
Wieso sollten beim Kopieren mit robocopy Dateien verloren gehen? Wenn sie noch geöffnet sind, können sie nicht kopiert werden, deswegen verschwinden die Dateien doch nicht??
Edit: Oder dann halt vielleicht, alle Dateien, ausser die jüngsten 2 kopieren?
for /f "skip=2 delims=" %%F in ('dir *.* /B /O-D /A-D') do copy %%F D:\Ziel\
*.vbs
Rennt, einmal gestartet, in einert Schleife alle paar Sekunden über das Quellverzeichnis. Wie gesagt, das Intervall sinnvoll anpassen, sodass sicher ist dass die Dateien in dieser Zeitspanne geschrieben wurden.
Als VBScript ohne lästiges Fenster. Einfach in den Autostart des Users schmeißen oder als geplanten Task mit wscript.exe als Programm und Benutzer-Login als Trigger.
Option Explicit
Const src = "%userprofile%\Desktop\Quelle", _
dst1 = "%userprofile%\Desktop\Ziel1", _
dst2 = "%userprofile%\Desktop\Ziel2", _
interval = 2000 ' milliseconds
Dim objFSO, objWSH, arrFiles(), i, found
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objWSH = CreateObject("WScript.Shell")
found = GetFileArray(arrFiles)
Do
WScript.Sleep interval
If found Then
For i = 0 To UBound(arrFiles)
On Error Resume Next
Err.Clear
objFSO.CopyFile objFSO.BuildPath(objWSH.ExpandEnvironmentStrings(src), arrFiles(i)), objFSO.BuildPath(objWSH.ExpandEnvironmentStrings(dst1), arrFiles(i))
objFSO.CopyFile objFSO.BuildPath(objWSH.ExpandEnvironmentStrings(src), arrFiles(i)), objFSO.BuildPath(objWSH.ExpandEnvironmentStrings(dst2), arrFiles(i))
If Err.Number = 0 Then
objFSO.DeleteFile objFSO.BuildPath(objWSH.ExpandEnvironmentStrings(src), arrFiles(i))
End If
Err.Clear
On Error Goto 0
Next
End If
found = GetFileArray(arrFiles)
Loop
Function GetFileArray(ByRef arr)
Dim objSrc, objFile, i, ubnd
Set objSrc = objFSO.GetFolder(objWSH.ExpandEnvironmentStrings(src))
Erase arr
i = 0
For Each objFile In objSrc.Files
ReDim Preserve arr(i)
arr(i) = objFile.Name
i = i + 1
Next
On Error Resume Next
Err.Clear
ubnd = UBound(arr)
If Err.Number = 0 Then
GetFileArray = True
Else
GetFileArray = False
End If
Err.Clear
On Error Goto 0
End Function
Als VBScript ohne lästiges Fenster. Einfach in den Autostart des Users schmeißen oder als geplanten Task mit wscript.exe als Programm und Benutzer-Login als Trigger.