我正在尝试将字符串“XYZ”添加到每个文件名,然后将我的文件从文件夹 A 移动到文件夹 B。这是我到目前为止的代码。
Private Const varSourceAddress As String = "\\serverA\drivename\FolderA\"
Dim diaddr As New DirectoryInfo(varSourceAddress)
Dim fiaddr As FileInfo() = diaddr.GetFiles()
While diaddr.GetFiles.Length > 0
For Each scannedFile As FileInfo In fiaddr
If scannedFile.Name.Contains("Thumbs") = False Then
If scannedFile.Exists Then
strOldName = scannedFile.Name
strNewName = strOldName.Insert(14, "XYZ")
scannedFile.CopyTo("\\serverA\drivename\FolderB\" & strNewName, True)
scannedFile.Delete()
strOldName = ""
strNewName = ""
End If
End If
Next
End While
我在 Windows 服务中使用此代码。当服务第一次运行时,一切都按照预期的方式发生。它确实将 XYZ 添加到每个文件的名称中,并且文件也被移动到文件夹 B。但是,在第二次运行时,它会发送一条错误消息:
System.IO.FileNotFoundException: Could not find file '\\serverA\drivename\folderA\20130327082003.pdf'.
我可以看到该文件20130327082003.pdf
已被移动到文件夹 B,新名称为20130327082003XYZ.pdf
文件夹 B,这一切都很好,但服务会不断检查文件夹 A 中的相同文件名。
我也尝试过重命名、移动、复制、复制到所有这些命令,但是系统不检查文件夹 A 中的新文件(如果有),而是继续检查已移动到文件夹 B 的文件。不知何故,循环不断引用它已重命名(并且已经移动)到文件夹B的最后一个文件。
一旦将文件复制到文件夹B,我正在使用.Delete
方法删除文件(或任何引用),但这似乎没有任何区别。
一旦服务将运行,最终假设将文件夹A中生成的每个新文件(在其名称中添加XYZ之后)移动到文件夹B。
任何帮助将不胜感激。谢谢你。