File matching and sorting

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
1 Like