我的代码示例已完成。您应该能够用一个字符串数组代替 fileList 变量,而不会有太多麻烦,因为 .NET 可以像我在这里做的那样 foreach 一个字符串数组。其余的代码非常简单。我创建 destPath 变量,然后创建路径本身(如果它不存在)。然后我们继续创建目标文件名,然后调用 copy。
此代码将处理路径完整文件名列表或字符串数组,其中每个字符串都是路径完整文件名。我还没有测试它是否会创建一个超过 1 级深度的路径名,所以你需要测试那个场景。
为了实现您保持整个路径活动的意图,只需将源文件夹变量更改为 c: 它应该可以正常工作。源文件夹的唯一用途是用空字符串替换指定的源文件夹,以准备将其附加到目标路径,这样就可以满足您的要求。
干杯!
Try
Dim fileList As New List(Of String)
Dim sourceFolder As String = "c:\Users\User1"
fileList.Add("c:\Users\User1\file1.docx")
fileList.Add("c:\Users\User1\subfolder1\file2.docx")
Dim destinationPath As String = "c:\backup"
For Each file As String In fileList
Dim destPath As String = String.Format("{0}{1}", destinationPath, IO.Path.GetDirectoryName(file).Replace(sourceFolder, ""))
If Not IO.Directory.Exists(destPath) Then IO.Directory.CreateDirectory(destPath)
Dim destFile As String = String.Format("{0}{1}", destinationPath, file.Replace(sourceFolder, ""))
IO.File.Copy(file, destFile, False)
Next
Catch ex As Exception
End Try