Ordnerinhalte vergleichen!

hazzan

Grünschnabel
hallo, wie kann ich den inhalt von verzeichnissen und unterverzeichnissen vergleichen?
ich möchte ein programm schreiben, dass jede geänderte datei aus ordner1 in ordner2 kopiert.

die kompletten ordnerinhalte zu kopieren würde zu lange dauern :)
es soll ein backup programm weden ;)
 
Versuch´s mal so:
FileDateTime zeigt an, wann die Datei das letzte mal geändert wurde.
Code:
Datei_1 = FileDateTime("C:\Test.txt")
Datei_2 = FileDateTime("C:\UnterOrdner\Test.txt")
If Datei_1 <> Datei_2 Then
' Kopieren
End If
 
Dazu benötigst Du 2 FileListBoxen und einen CommandButton
Code:
Private Sub Command1_Click()
Dim N As Integer

For N = 0 To File1.ListCount - 1
If FileDateTime(File1.Path & "\" & File1.List(N)) _
<> FileDateTime(File2.Path & "\" & File2.List(N)) Then
FileCopy File1.Path & "\" & File1.List(N), File2.Path & "\" & File2.List(N)
End If
Next
End Sub

Private Sub Form_Load()
File1.Path = "C:\DeinOrdner"
File2.Path = "C:\DeinBackupOrdner"
End Sub
Das ist nur ein einfaches Beispiel das keine Unterordner berücksichtigt !
Wenn Du mit Unterordnern arbeiten willst, solltest Du Dich mit FSO (File System Object) beschäftigen.
 
okay, danke!
scheinbar steckt hinter nem kleinen backup programm viel mehr ;)
wenn ich ein großes array mache und für jede datei die in ordner1 bzw in einem unterordner von ordner1 oder einem unterodner von unterordner usw. ist den kompletten pfad aufschreibe das gleiche mit dem backupverzeichniss mache, dann würde es doch auch gehen, richtig?

also bräuchte ich code, der alles was in z.b C:\WINNT ist auflistet und in ein array schreibt.

würde es sehr lange dauern, bis alles gelistet ist? für ~1gb daten mit durchschnittlich 5mb?
ich denke mal auf alle fälle schneller als 1 gb zu kopieren!
 
Ich würde dir das FileSystemObjekt aus der Microsoft Scripting Runtime empfehlen. Damit lassen siche viele Datei- und Verzeichnisoperationen bequem erledigen.

Code:
Private Sub VerzeichnisDurchgehen(ByVal Pfad As String)
    Dim fso As Scripting.FileSystemObject
    Set fso = New Scripting.FileSystemObject
    Dim Verzeichnis As Scripting.Folder
    Dim UnterVerzeichnis As Scripting.Folder
    Dim Datei As Scripting.File
    
    Set Verzeichnis = fso.GetFolder(Pfad)
    
    For Each Datei In Verzeichnis.Files
        'Hier jetzt irgendwas mit der Datei machen, z.B. vergleichen:
        'Zum Testen lasse ich hier einfach mal den Dateipfad im Debug-Fenster ausgeben:
        Debug.Print Datei.Path
    Next
    
    For Each UnterVerzeichnis In Verzeichnis.SubFolders
        VerzeichnisDurchgehen UnterVerzeichnis.Path
    Next
    
End Sub

Private Sub Form_Load()
    VerzeichnisDurchgehen "C:\WINNT"
End Sub
 
Recht herzlichen Dank euch beiden, ist ein echt super Forum hier!
Damit kann ich jetzt endlich ein schickes Programm schreiben. :)

gregor
 
Zurück