Можно ли перемещать несколько файлов в пакетном режиме - PullRequest
0 голосов
/ 28 января 2019

Я хочу переместить несколько файлов из одного каталога в другой.Я использую «My.Computer.FileSystem.MoveFile», и это прекрасно работает, но обрабатывает один файл за раз.Таким образом, для каждого уже существующего файла в этом каталоге вместо одного предупреждения для пакета я получаю предупреждение (т.е. «Файл уже существует»).Можно ли получить одно предупреждение для всех перемещенных файлов?

       For i = .Items.Count - 1 To 0 Step -1

                Dim map = .Items.Item(i).SubItems(COL_MAP).Text
                Dim bestandHernoemd = .Items.Item(i).SubItems(COL_HERNOEMD).Text
                Dim bestandOrigineel = .Items.Item(i).SubItems(COL_ORIGINEEL).Text

                    Try

                        My.Computer.FileSystem.MoveFile(map & bestandOrigineel, My.Settings.OPTIE_OvernemenStandaardMapNaam & bestandHernoemd, Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, Microsoft.VisualBasic.FileIO.UICancelOption.ThrowException)

                        .Items.RemoveAt(i)                               

                    Catch ex As Exception

                        foutLijst.Add(bestandOrigineel & ": " & ex.Message)

                    End Try
        Next

1 Ответ

0 голосов
/ 29 января 2019

И если вы хотите копировать файлы рекурсивно (все папки, подпапки, файлы или субфайлы) из одного источника в место назначения, вы можете использовать следующую подпроцедуру.Предупреждение не применяется и должно перезаписать пункт назначения.

Public Sub CopyDirectory(ByVal sourcePath As String, ByVal destinationPath As String)
   Dim sourceDirectoryInfo As New System.IO.DirectoryInfo(sourcePath)
        'If the destination folder doesn't exist then create it'
      If Not System.IO.Directory.Exists(destinationPath) Then
            'Obs, folder doesn't exist, create one please :)'
         System.IO.Directory.CreateDirectory(destinationPath)
      End If
   Dim fileSystemInfo As System.IO.FileSystemInfo
       For Each fileSystemInfo In sourceDirectoryInfo.GetFileSystemInfos
         Dim destinationFileName As String = System.IO.Path.Combine(destinationPath, fileSystemInfo.Name)
            'Now check whether its a file or a folder and take action accordingly
            If TypeOf fileSystemInfo Is System.IO.FileInfo Then
              System.IO.File.Copy(fileSystemInfo.FullName, destinationFileName, True)
            Else
              ' Recursively call the method to copy all the nested folders
              CopyDirectory(fileSystemInfo.FullName, destinationFileName)
            End If
       Next
End Sub
...