vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Ordner vergleichen 
Autor: MartinS.
Datum: 03.05.11 09:55

Hallo,

danke Manfred, Dein Programm funktioniert. Jedoch werden leere Ordner nicht mit kopiert. Das sollte ich allerdings auch noch hinbekommen.

Jetzt versuche ich, das Problem selbst zu lösen, um einen gewissen Lerneffekt zu erzielen. Mein Programm funktioniert soweit schon, jedoch nur auf einer Ebene. Die Unterordner der Unterordner(ich hoffe, ihr wisst, was ich meine) werden noch nicht mit kopiert. Der rekursive Aufruf scheint irgendwo zu hängen. Vielleicht kann einer von euch beiden da noch mal einen Blick drauf werfen, wo der Haken ist.

@Micke:
Die Unterschiede der Dateien erfasse ich, indem ich die Dateien auf unterschiedliche Länge teste.

Hier mein Code:
#Region "Verzeichnisse vergleichen, vergleichDir"
    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 refDir As New DirectoryInfo("ZIELVERZEICHNIS")
        Dim oDestSubDir As DirectoryInfo
        Dim sourceFile As FileInfo
        Dim pfad As String
        Dim iCounter As Integer = 0
        Dim anzahlSubDirs As Integer = 0
 
        For Each sourceFile In sourceDir.GetFiles
            For Each destFile As FileInfo In destdir.GetFiles
                If (sourceFile.Length = destFile.Length) Then
                ElseIf (sourceFile.Length <> destFile.Length) Then
                    sourceFile.CopyTo(refDir.FullName + 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(refDir.FullName + 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( _
              )
                pfad = oSourceSubDir.Name
                For Each oDestSubDir In destdir.GetDirectories()
                    If (Not destdir.GetDirectories.Contains(oSourceSubDir)) Then
                        refDir.CreateSubdirectory(oSourceSubDir.Name)
                        pfad = refDir.FullName + pfad + "\"
                        For Each d As FileInfo In oSourceSubDir.GetFiles("*.*")
                            Dim str As String = Mid(d.FullName, _
                              d.FullName.LastIndexOf("\") + 2)
                            d.CopyTo(pfad & str)
                            'vergleichDir(oSourceSubDir, oDestSubDir)
                        Next
                        vergleichDir(oSourceSubDir, oDestSubDir)
                    Else
                        pfad = oSourceSubDir.Name
                        MsgBox("Pfad: " + pfad)
                        CopyToFolder(oSourceSubDir.Name, refDir.FullName)
                        MsgBox("SubDirName: " + oSourceSubDir.Name)
                        'vergleichDir(oSourceSubDir, oDestSubDir)
                    End If
                    vergleichDir(oSourceSubDir, oDestSubDir)
                Next
            Next
        Catch ex As Exception
        End Try
        'MsgBox("Dateien kopiert.")
    End Sub
Nachtrag:
Ich habe mir an wichtigen Stellen mal die aktuell angefassten Dateien und Ordner mal in einer Messagebox ausgeben lassen und gesehen, dass die Datei, die in einem Unter-Unterordner liegt, gar nicht erfasst wird. Das Problem liegt entweder in dem rekursiven Aufruf oder in der gesamten Funktion...

"Sir, we?re surrounded."
"Excellent, we can attack in any direction"

Beitrag wurde zuletzt am 03.05.11 um 10:11:45 editiert.

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Ordner vergleichen4.052MartinS.27.04.11 12:20
Re: Ordner vergleichen1.897Manfred X27.04.11 12:52
Re: Ordner vergleichen1.770Manfred X27.04.11 16:09
Re: Ordner vergleichen1.789MartinS.27.04.11 16:19
Re: Ordner vergleichen1.726Manfred X27.04.11 16:39
Re: Ordner vergleichen1.756MartinS.28.04.11 09:09
Re: Ordner vergleichen1.890Manfred X28.04.11 09:39
Re: Ordner vergleichen1.780Micke28.04.11 19:02
Re: Ordner vergleichen1.737Manfred X28.04.11 20:29
Re: Ordner vergleichen1.778MartinS.29.04.11 09:31
Re: Ordner vergleichen1.856Manfred X29.04.11 10:15
Re: Ordner vergleichen1.910MartinS.03.05.11 09:55
Re: Ordner vergleichen1.595Manfred X03.05.11 10:35
Re: Ordner vergleichen1.675MartinS.03.05.11 12:14
Re: Ordner vergleichen1.678Manfred X03.05.11 14:28
Re: Ordner vergleichen1.641MartinS.03.05.11 16:46
Re: Ordner vergleichen1.743Micke03.05.11 17:30
Re: Ordner vergleichen1.571Micke03.05.11 14:57
Re: Ordner vergleichen1.663Micke29.04.11 12:28

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel