Try This please:
Use Directory.GetFiles(folderPath, “*.pdf”)to get all PDFs.
Separate into Two Lists:
Use LINQ or For Each to split:
- Files with date (e.g., contain “_”).
- Files without date.
filesWithDate = allFiles.Where(Function(f) Path.GetFileNameWithoutExtension(f).Contains(“_”)).ToList()
filesWithoutDate = allFiles.Where(Function(f) Not Path.GetFileNameWithoutExtension(f).Contains(“_”)).ToList()
For Each fileNoDate In filesWithoutDate
number = GetNumberFromFilename(fileNoDate)
matchFile = filesWithDate.FirstOrDefault(Function(f) Path.GetFileNameWithoutExtension(f).StartsWith(number))
If matchFile IsNot Nothing Then
pdfText = ReadPDF(fileNoDate)
sender = ExtractSenderFromText(pdfText)
destinationFolder = Path.Combine(baseOutputFolder, sender)
Directory.CreateDirectory(destinationFolder)
MoveFile(fileNoDate, Path.Combine(destinationFolder, Path.GetFileName(fileNoDate)))
MoveFile(matchFile, Path.Combine(destinationFolder, Path.GetFileName(matchFile)))
End If