Hallo,
ich stehe vor einem Problem, bei dem ich nicht weiterkomme.
Aufgabe ist es, ein Programm zu schreiben, welches zwei Ordner miteinander vergleicht. Nach einem Update soll der geänderte Ordner mit einem Referenzordner verglichen werden. Alle Dateien, die geändert wurden oder neu hinzugekommen sind, sollen in einen neuen Ordner kopiert werden. Dabei darf die Ordnerstruktur nicht geändert werden. Es müssen also alle Dateien in die gleichen Unterordner kopiert werden.
Ich hoffe, ich konnte darlegen, was die Aufgabenstellung ist; kann aber bei Bedarf gerne versuchen, noch genauer zu werden.
Ich bin, nach einigem Suchen im Internet, soweit, dass der Vergleich der Dateien und das Kopieren unterschiedlicher Dateien funktioniert. Nur bei dem rekursiven Aufruf der Funktion hapert es noch: Zwar werden auch die Unterordner durchsucht und unterschiedliche Dateien kopiert, allerdings leider ohne die Unterordner, d.h. die Ordnerstruktur wird nicht mitkopiert. Langsam aber sich bin ich verzweifelt. Hier meine Funktion, ich hoffe, damit kann jemand was anfangen und ein bisschen Hilfestellung geben.
Public Sub vergleichDir(ByVal verz1 As DirectoryInfo, ByVal verz2 As _
DirectoryInfo)
Dim sourceDir As New DirectoryInfo(verz1.FullName)
Dim destdir As New DirectoryInfo(verz2.FullName)
'Dim oSourceSubDir As DirectoryInfo
Dim oDestSubDir As DirectoryInfo
'Dim sourceFile As FileInfo
Dim iCounter As Integer = 0
Dim anzahlSubDirs As Integer = 0
For Each sourceFile As FileInfo In sourceDir.GetFiles
For Each destFile As FileInfo In destdir.GetFiles
If (sourceFile.Length = destFile.Length) Then
'MsgBox("Vorhanden", "1", "Erfolg." & iCounter)
ElseIf (sourceFile.Length <> destFile.Length) Then
sourceFile.CopyTo("ZIELPFAD" + sourceFile.Name, 1)
iUnterschiede = iUnterschiede + 1
ElseIf (Not destdir.GetFiles.Contains(sourceFile)) Then
MsgBox("Datei " & sourceFile.Name & " nicht vorhanden. Wird" & _
"nun ersetzt.", "1", iCounter)
sourceFile.CopyTo("ZIELPFAD" + sourceFile.Name, 1)
MsgBox(iCounter + " Dateien kopiert.")
Else
MsgBox("Keiner der obrigen Fälle!!")
End If
Next
Next
Try
For Each oSourceSubDir As DirectoryInfo In sourceDir.GetDirectories( _
)
For Each oDestSubDir In destdir.GetDirectories()
'MsgBox("oSourceSubDir: " + oSourceSubDir.Name)
'MsgBox("oDestSubDir: " + oDestSubDir.Name)
CopyFolder(oSourceSubDir.Name, "ZIELPFAD" & _
oSourceSubDir.Name, 1, 1)
vergleichDir(oSourceSubDir, oDestSubDir)
'MsgBox("Anzahl Verzeichnisse: " + anzahlSubDirs)
Next
'MsgBox("Unterordner" + anzahlSubDirs)
Next
Catch ex As Exception
End Try
End Sub "Sir, we?re surrounded."
"Excellent, we can attack in any direction" |