Nicomendox Ответов: 1

Как я могу получить общее количество папок файлов в списке перечисленных элементов ?


Тогда в форме есть список

Я перечисляю папки путь в Listbox с FolderBrowserDialog как это ;

C:\Users\Yaman\Desktop\TestA ' (Имеет 4 Папки 27 Файлов)
C:\Users\Yaman\Desktop\TestB '(Имеет 5 Папок 30 Файлов)

Я могу получить количество папок и файлов, когда я перечислил один До свидания один.

если бы я перечислил только это ;

C:\Users\Yaman\Desktop\TestA

в listbox результат таков
27 Файлов / Папок 4

но когда я перечислил оба пути папок я могу получить только последний результат подсчета перечисленных папок

если бы я перечислил

C:\Users\Yaman\Desktop\TestA
C:\Users\Yaman\Desktop\TestA

тогда результат будет последним в списке следующим образом

30 Файлов / 5 Папок


Как я могу получить все папки files и subfolders count, которые вместе перечислены в listbox ?

Что я уже пробовал:

<pre>Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click
        For z = 0 To ListBox1.Items.Count - 1
            Dim TheSize As Long = GetDirSize(ListBox1.Items.Item(z)) '("C:\Users\Yaman\Desktop\Deneme")
            Dim counterDir As Integer = IO.Directory.GetDirectories(ListBox1.Items.Item(z), "*.*", IO.SearchOption.AllDirectories).Length 'counts the number of files
            Dim counterFile As Integer = IO.Directory.GetFiles(ListBox1.Items.Item(z), "*.*", IO.SearchOption.AllDirectories).Count 'counts the number of files
            Label5.Text = counterFile & " Files" & " / " & counterDir.ToString & " Folders"
        Next z
       
    End Sub

1 Ответов

Рейтинг:
9

Maciej Los

Проверить это:

Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click
        Dim currpath As String = ""
        Dim TheSize As Long = 0
        Dim counterFile As Integer = 0
        Dim counterDir As Integer = 0
        
        For z = 0 To ListBox1.Items.Count - 1
            currpath = ListBox1.Items.Item(z).ToString()
            TheSize = GetDirSize(currpath) '("C:\Users\Yaman\Desktop\Deneme")
            counterDir += IO.Directory.GetDirectories(currpath, "*.*", IO.SearchOption.AllDirectories).Length 'counts the number of files
            counterFile += IO.Directory.GetFiles(currpath, "*.*", IO.SearchOption.AllDirectories).Count 'counts the number of files
        Next z
       Label5.Text = counterFile & " file(s)" & " in " & counterDir.ToString & " folder(s)"
       
    End Sub


Внимательно посмотрите на эти изменения ;)

Для получения более подробной информации, пожалуйста, смотрите: Область действия в Visual Basic | Microsoft Docs[^]


Nicomendox

Спасибо, он отлично работает. И прости за мой плохой английский.

с вашего позволения, я хочу задать еще один вопрос. как вы видите, я пытаюсь скопировать несколько файлов и папок, которые перечислены в списке.

с помощью этого кода я также могу добавить несколько файлов в listbox :

Скрыть Код Скопировать
Если OpenFileDialog1.ShowDialog() = DialogResult.Тогда ладно

Дим ся-ся как целое число = меня.OpenFileDialog1.файловые имена.Длина - 1
Для i как целого числа = 0 для sayi

Список listbox1.Предметы.Добавить(OpenFileDialog1.Имена файлов(i))
'ListBox2.Items.Добавить(OpenFileDialog1.Имена файлов(i))
Следующий

Конец, Если


Но...
Когда я добавляю несколько папок и несколько файлов в список, то на этот раз я не могу получить количество папок и файлов вместе.

Когда я копирую папку(Ы) и файл(ы), которые перечислены в списке, я могу скопировать все файлы и папки в каталог torget хорошо. но я не могу сосчитать папки и файлы вместе

если вы позволите мне спросить, как я могу это сделать, пожалуйста ?


еще раз большое вам спасибо за быстрое и точное решение.