Отображение имен файлов, имеющих дубликаты в конкретной папке - VBA

Узнай цену своей работы

Формулировка задачи:

Добрый день! Стоит задача, вывести список файлов, для которых в данной папке имеются дубликаты (1 и более). Дубликаты отличаются только добавлением в конце имени доп.части (1), (2) и т.д., как это делает обычно система Windows. Файлы формата txt. Исходные данные: moloko.txt kefir.txt moloko (1).txt sahar.txt moloko (2).txt sahar (1).txt Вывод: moloko.txt sahar.txt

Решение задачи: «Отображение имен файлов, имеющих дубликаты в конкретной папке»

textual
Листинг программы
Sub FindDuplicateFiles()
    Dim d As Object, p As Long, n As String, k As Variant
    Set d = CreateObject("Scripting.Dictionary")
    n = Dir("C:\Temp\" & "*.txt") 'Вместо C:\Temp\ необходимо указать путь к папке с файлами.
    While n <> vbNullString
        n = Left(n, Len(n) - 4) 'Отсекаем расширение.
        p = InStrRev(n, "(")
        If p > 0 Then If IsNumeric(Mid(n, p + 1, 1)) Then n = Trim(Left(n, p - 1)) 'Отсекаем скобки с цифрами (если есть).
        If d.Exists(n) Then d(n) = 1& Else d.Add n, 0& 'Запоминаем имя файла, либо ставим пометку, что найден дубликат.
        n = Dir
    Wend
    For Each k In d
        If d(k) = 1& Then Debug.Print k & ".txt" 'Выводим дубликаты.
    Next k
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы