1

У меня есть папка на 700 МБ, содержащая 24 тыс. Текстовых файлов с различными размерами. Я хочу создать новые папки, каждая из которых имеет размер ~ 50 МБ, чтобы я мог обрабатывать их в Excel с помощью vba, поскольку он имеет ограничение строки в 10 лакх строк.

Любая помощь будет оценена.

1 ответ1

1

Я тоже был заинтересован в этом, поэтому вот код PowerShell, который я использую. Это позволит получить все файлы из вашей основной папки и переместить их в подпапки размером 10 МБ. Не стесняйтесь адаптировать значения и имена к вашим потребностям.

# Replace with your base folder's path
$baseFolder = "C:\Users\you\myHugeFolder"

# Replace with the desired value for the subfolders to create
$maxSubFolderSize = 10MB

# Get all files contained in your base folder (could use the -recurse switch if needed)
$allFiles = Get-ChildItem $baseFolder

# Setting the subfolders naming convention : a name and a suffix
$baseSubFolder = "SubFolder-"
[int]$index = 0

# Creating the first subfolder
$subFolder = "SubFolder-" + "$index"
New-Item -Path $subFolder -Type Directory -Force

# Now processing the files
foreach ($file in $allFiles)
{
    # Evaluating the size of the current subfolder
    $subFolderSize = ((Get-ChildItem $subFolder -Recurse | Measure-Object -Property Length -Sum -ErrorAction Stop).Sum / 1MB)

    # If the current subfolder size is greater than the limit, create a new subfolder and begin to copy files in it
    if([int]$subFolderSize -gt [int]$maxSubFolderSize/1MB)
    {
        $index++
        $subFolder = $baseSubFolder + $index
        New-Item -Path $subFolder -Type Directory -Force
        Write-Verbose -Message "Created folder $subFolder"
        Move-Item $file.FullName -Destination $subFolder
    }
    # If the current subfolder is not yet greater that the limit, continue copying files in it
    else {
        Move-Item $file.FullName -Destination $subFolder
    }
}

Надеюсь это поможет !

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .