42908
Goto Top

VB - Dateien und Ordner kopieren - jedoch nur neuere daten

Hallo Leute,

ich bin dabei in VB ein kleines Programm zu schreiben, dass mir Dateien und Ordner vom Netz auf ein vorher ausgewähltes Laufwerk kopiert.
Das auswählen des Ziellaufwerks klappt auch ohne Probleme.
Nur würde ich den Kopiervorgang gerne so gestalten, dass er nur neuere Dateien kopiert. Wie z.B. bei xcopy mit dem Parameter "/d".
Ist dies auch mit Basic möglich? Das Programm soll erkennen, ob die Quell-dateien neuer oder älter sind als die Zieldateien, damit nicht unnötige Dateien kopiert werden.

Habe es bereits mit "Filecopy" und "My.Computer.FileSystem.CopyDirectory" versucht. Jedoch habe ich nichts über Parameter gefunden, die das Datum abgleichen.

Gruß,
Patrick

Content-Key: 94894

Url: https://administrator.de/contentid/94894

Printed on: April 19, 2024 at 00:04 o'clock

Member: bastla
bastla Aug 20, 2008 at 15:08:09 (UTC)
Goto Top
Hallo System#Schneider!

"My.Computer.FileSystem.CopyDirectory"
So bequem wird's wohl nicht gehen ...

Sieh Dir einmal die "My.Computer.FileSystem.GetFileInfo"-Methode an - damit kannst Du das Änderungsdatum ("FileSystemInfo.LastWriteTime"-Eigenschaft) der Quell- und Zieldatei auslesen.

In einer Schleife über alle Quelldateien kannst Du dann jeweils feststellen, ob die Zieldatei existiert bzw ob diese jünger ist - anderenfalls "My.Computer.FileSystem.CopyFile" mit Option "overwrite".

Grüße
bastla
Mitglied: 42908
42908 Aug 21, 2008 at 06:17:34 (UTC)
Goto Top
Guten Morgen,

danke erst mal für den Tipp.
Leider kann ich die "Filesysteminfo.lastwritetime" nicht wirklich finden. Wie genau muss ich den Befehl anwenden?

Zur Schleife:

Also ich habe in einem Ordner mehrere Unterordner mit Dateien und auch Dateien direkt im Root-Verzeichnis des Ordners. Nun möchte ich mittels checkboxen auswählen welche der Unterordner kopiert werden sollen. Ebenso sollen die Dateien, die direkt im Ordner liegen auch nach Datum abgeglichen werden und dann evtl kopiert werden.
Wie genau muss ich dazu die Schleife bauen?! Für Anregungen wäre ich dankbar...

Gruß,
Patrick
Member: bastla
bastla Aug 21, 2008 at 08:33:00 (UTC)
Goto Top
Hallo System#Schneider!

Die Schleife (am Beispiel aller ".txt"-Dateien des Ordners "D:\Texte") sähe in VB2005 (welche Version verwendest Du eigentlich?) etwa so aus:
Dim File As Object, AllFiles As String = "", DateModified As Date  
For Each File In My.Computer.FileSystem.GetFiles("D:\Texte", FileIO.SearchOption.SearchTopLevelOnly, "*.txt")  
    DateModified = My.Computer.FileSystem.GetFileInfo(File).LastWriteTime
    AllFiles = AllFiles & vbCrLf & DateModified & " " & File.ToString  
Next
MsgBox(Mid(AllFiles, 3)) 'Erste Zeilenschaltung überspringen  
Grüße
bastla