vb. net копировать файл в папку (80 файлов в папке) - PullRequest
0 голосов
/ 17 апреля 2020

есть папка с именем "X"
В папке "X" содержится около 100-1000 файлов
пример имени файла: 1.jpg 2.jpg 3.jpg ---> 1000.jpg

сначала, я хочу подсчитать, сколько там файлов

, если есть 160 файлов, то создайте 2 папки (с именами 1 и 2)
move 1.jpg- 80.jpg файл в папку 1 (всего: 80)
переместить 81.jpg-160.jpg файл в папку 2 (всего: 80)

, но если имеется 200 файлов, создайте 3 папки ( с именами 1, 2 и 3)
переместить файл 1.jpg-80.jpg в папку 1 (всего: 80)
переместить файл 81.jpg-160.jpg в папку 2 (всего: 80)
переместить файл 161.jpg-200.jpg в папку 3 (всего: 40)

1 Ответ

1 голос
/ 17 апреля 2020

Вы можете следовать этому подходу. Перейдите к файлам в вашей папке X с помощью Directory.EnumerateFile и сосчитайте. Когда результат операции mod 80 возвращает ноль, вы можете создать новую подпапку и перезапустить количество файлов.

Dim dirCount = 0
Dim fileCount = 0
Dim totalFileCount = 0

Dim x As String = "e:\temp"
Dim newFolder As String = ""

 ' Get one file name at time
For Each file In Directory.EnumerateFiles(x, "*.*", SearchOption.TopDirectoryOnly)
    ' Do we need to create a new folder?
    ' This is true even when fileCount is zero
    If fileCount Mod 80 = 0 Then
        dirCount += 1
        newFolder = Path.Combine(x, dirCount.ToString())
        Directory.CreateDirectory(newFolder.ToString())
        fileCount = 0
    End If
    Dim newFile = Path.Combine(Path.Combine(newFolder), Path.GetFileName(file))
    System.IO.File.Move(file, newFile)
    fileCount += 1
    totalFileCount += 1
Next
Console.WriteLine("Moved " & totalFileCount  + " files")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...