Hallo!
Irgendwie scheine ich es nicht zu kapieren ...
Stehen die beim Vergleich aufeinander zu beziehenden Dateien
in unterschiedlich benannten Unterordnern???
Was an diesem Code GENAU funktioniert nicht wie gewünscht??
(CopyChangedFilesToNewDirectory)
Als Parameter werden drei Angaben des Typs "Laufwerk:\Ordner\..."
erwartet.
Der Ausgabeordner "NewFolder" wird jedes mal komplett neu angelegt,
inclusive der jeweils BENÖTIGTEN Unterordner.
Die zu kopierenden Dateien werden in die entsprechend
benannten Unterordner gestellt.
Module modFolderFuck
<System.Runtime.CompilerServices.Extension()> _
Private Function StringListToUpper _
(ByVal Lst As List(Of String)) As List(Of String)
Dim iLst As New List(Of String)
For i As Integer = 0 To Lst.Count - 1
iLst.Add(Lst(i).ToUpper)
Next i
Return iLst
End Function
Private Function CopyToFolder(ByVal SourceFile As String, _
ByVal DestFile As String, _
ByVal Overwrite As Boolean) As Boolean
Try
If Not IO.File.Exists(SourceFile) Then Return False
Dim parts() As String = DestFile.Split("\"c)
If String.IsNullOrEmpty(DestFile) Then Return False
If Not IO.Directory.Exists(parts(0)) Then Return False 'Laufwerk
For i As Integer = 1 To parts.Length - 2
parts(0) &= "\" & parts(i)
If Not IO.Directory.Exists(parts(0)) Then
IO.Directory.CreateDirectory(parts(0))
End If
Next i
IO.File.Copy(SourceFile, DestFile, Overwrite)
Return True
Catch
Return False
End Try
End Function
Public Function CopyChangedFilesToNewDirectory _
(ByVal CompareFolder As String,
ByVal BasicFolder As String, _
ByVal NewFolder As String) As Boolean
Try
CompareFolder = CompareFolder.ToUpper
BasicFolder = BasicFolder.ToUpper
If IO.Directory.Exists(NewFolder) Then
IO.Directory.Delete(NewFolder, True)
End If
IO.Directory.CreateDirectory(NewFolder)
Dim comparefiles As List(Of String) = _
My.Computer.FileSystem.GetFiles(CompareFolder, _
FileIO.SearchOption.SearchAllSubDirectories, _
"*.*").ToList.StringListToUpper
Dim basicfiles As List(Of String) = _
My.Computer.FileSystem.GetFiles _
(BasicFolder, _
FileIO.SearchOption.SearchAllSubDirectories, _
"*.*").ToList.StringListToUpper
For i As Integer = 0 To comparefiles.Count - 1
Dim comparefile As String = comparefiles(i)
comparefile = comparefile.Replace(CompareFolder, BasicFolder)
Dim tocopy As Boolean = False
If Not basicfiles.Contains(comparefile) Then
tocopy = True
Else
Dim index As Integer = basicfiles.IndexOf(comparefile)
If basicfiles(index).Length <> comparefiles(i).Length Then
tocopy = True
End If
If New IO.FileInfo(basicfiles(index)).LastWriteTime <> _
New IO.FileInfo(comparefiles(i)).LastWriteTime Then
tocopy = True
End If
End If
If tocopy Then
comparefile = comparefile.Replace(BasicFolder, NewFolder)
CopyToFolder(comparefiles(i), comparefile, True)
End If
Next i
Return True
Catch
Return False
End Try
End Function
End Module
Beitrag wurde zuletzt am 29.04.11 um 10:23:59 editiert. |