Aktualisieren von Dateien, die im Zielverzeichnis vorhanden sind (analog zu xcopy /u)

Jacka

Erfahrenes Mitglied
Hallo zusammen!

Ich möchte Dateien aus einem Ordner in einen anderen Ordner kopieren (als Backup). An sich ist das ja kein Problem, ich möchte jedoch nur die Dateien kopieren, die seit dem letzten Backup geändert wurden. Sprich, nur die Aktuallisierten.

In einer Batch Datei kann man das ganz toll mit xcopy und der Option /U (aktualisiert Dateien, die im Zielverzeichnis vorhanden sind) realisieren.

Da ich die Dateien jedoch nun anhand ihres Names in verschiedene Ordner kopieren muss, geht das in diesem Fall nicht mehr mit einer Batch.
Also muss ich das ganze nach VB übertragen.

Man müsste ja das Datum bei jeden Eintrag im Ziel- und im Quellordner vegleichen...
Hat jemand eine Idee, wie man die Aktuallisierung realisieren kann? :confused:

Vielen Dank und Grüße,
Jacka
 
Hallo Jacka,

ich arbeite mit VB6 unter Windows XP. Folgende Routine stammt aus der Online-Hilfe unter dem Stichwort: DateLastModified-Eigenschaft. Das "Scripting.FileSystemObject" gehört wohl zu VBS. Ich habe es unter den oben genannten Bedingungen erfolgreich getestet. Ob ein so erstelltes Programm auf anderen Rechnern (z. B. Windows 95) lauffähig ist kann ich nicht testen.

Code:
Sub ShowFileAccessInfo(filespec)
    Dim fs, f, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFile(filespec)
    s = UCase(filespec) & vbCrLf
    s = s & "Created: " & f.DateCreated & vbCrLf
    s = s & "Last Accessed: " & f.DateLastAccessed & vbCrLf
    s = s & "Last Modified: " & f.DateLastModified  
    MsgBox s, 0, "File Access Info"
End Sub

Vielleicht hilft es Dir Weiter.

Eine andere Möglichkeit ist das Archiv-Bit. Immer beim Speichern einer Datei wird vom Betriebssytem das Archiv-Bit gesetzt. Wenn Du bei allen in Frage kommenden Dateien nach dem Speichern/Kopieren das Archiv-Bit mit:

Code:
Dim sPfad As String
Dim sDatName As String
:
:
sPfad = “C:\…..”
sDatName = „DeineDatei.txt“
:
:
SetAttr sPfad & sDatName, 0

zurüchsetzt, kannst Du mit:

Code:
Dim iAttr As Integer
:
iAttr = GetAttr(sPfad & sDatName) And vbArchive
  If iAttr = 0 Then
    MsgBox "nicht gesetzt"
  Else
    MsgBox "gesetzt"
  End If
überprüfen ob eine Datei nach dem letzten Zurücksetzen gespeichert wurde.

Viel Erfolg
Walter Gutermann
 
Zurück