各ファイル名に文字列「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 が追加され、ファイルは folderB にも移動されます。ただし、2 回目の実行時に、エラー メッセージが送信されます。
System.IO.FileNotFoundException: Could not find file '\\serverA\drivename\folderA\20130327082003.pdf'.
ファイル20130327082003.pdf
はすでに新しい名前の folderB に移動されていることがわかります。それで問題ありません20130327082003XYZ.pdf
が、サービスは folderA で同じファイル名をチェックし続けます。
これらすべてのコマンドの名前変更、移動、コピー、コピーも試しましたが、フォルダーAに新しいファイルがある場合はチェックする代わりに、システムはフォルダーBに既に移動されているファイルをチェックし続けます。どういうわけか、ループは、名前を変更した(そしてすでに移動した)最後のファイルをfolderBに参照し続けます。
folderBにコピーされたファイル(または任意の参照)を削除する方法を使用.Delete
していますが、違いはないようです。
サービスが実行されると、最終的には、folderA で生成されたすべての新しいファイル (名前に XYZ を追加した後) を folderB に移動することになります。
どんな助けでも大歓迎です。ありがとうございました。