Как разделить файл на части в Windows

Способы разделить файл на части в WindowsЕсли для передачи, хранения или других целей вам потребовалось разделить большой файл на несколько частей, сделать это в Windows 11, 10 и предыдущих версиях системы можно несколькими способами: с помощью команд PowerShell и командной строки, в сторонних программах, или с помощью онлайн-сервисов, впрочем в последнем случае ОС не будет играть роли.

В этой инструкции подробно о нескольких способах разделить большой файл на несколько частей, а также кратко о разделении файлов различных типов: pdf и txt, видео и других.

Способы разделить большой файл на части

Эта часть инструкции не касается какого-то определенного типа файлов: разделяется любой файл, независимо от типа и содержимого — это может быть текстовый файл или двоичный, медиа или что-то ещё. Для большинства из них чтение станет невозможным до последующего объединения частей.

Разделение файла на несколько частей в PowerShell

Первая возможность — использовать команды и скрипты PowerShell.

FIleSplitter

Если вы не готовы самостоятельно писать такие скрипты, рекомендую использовать готовый модуль для разделения файлов:

  1. Запустите PowerShell от имени Администратора. В Windows 11 и Windows 10 это можно сделать, нажав правой кнопкой мыши по кнопке «Пуск» и выбрав пункт «Windows Powershell (Администратор)» или «Терминал Windows (Администратор)».
  2. Установите модуль FileSplitter с помощью команды
    Install-Module -Name FileSplitter
    в процессе потребуется подтвердить установку вводом Y и нажатием Enter. Установка File Splitter в PowerShell
  3. После того, как модуль установлен, в PowerShell будут поддерживаться две команды: Split-File для разделения файла и Join-File для его объединения.

Примеры использования команд:

Split-File -Path "C:\test.zip" -PartSizeBytes 2.5MB

Делит файл C:\test.zip на части размером 2.5 Мб с именами testzip.00.part, testzip.01.part и далее в том же расположении, где хранится оригинальный файл.

Join-File -Path "C:\test.zip"

Команда ищет файл c:\testzip.00.part и остальные части, объединяет их в файл C:\test.zip

Теперь несколько примеров скриптов PowerShell которые могут быть полезны, если вы захотите проработать свою реализацию.

Разделение текстового файла в PowerShell

Скрипт для разделения файла с текстовым содержимым (txt, log и других) на части установленного в первой строке размера, при этом разделение происходит по строкам без их обрыва посередине:

$upperBound = 1MB
$ext = "txt"
$rootName = "txt_"

$reader = new-object System.IO.StreamReader("C:\text.txt")
$count = 1
$fileName = "{0}{1}.{2}" -f ($rootName, $count, $ext)
while(($line = $reader.ReadLine()) -ne $null)
{
    Add-Content -path $fileName -value $line
    if((Get-ChildItem -path $fileName).Length -ge $upperBound)
    {
        ++$count
        $fileName = "{0}{1}.{2}" -f ($rootName, $count, $ext)
    }
}

$reader.Close()

Разделение и объединение произвольного двоичного файла

Скрипт для разделения произвольного файла на части:

function Split-Files
{
 
    [CmdletBinding()]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeLine = $true, ValueFromPipelineByPropertyName = $true)]
        [String]
        $InputFile,
 
        [Parameter(Mandatory = $true)]
        [String]
        $OutputDirectory,
 
        [Parameter(Mandatory = $false)]
        [String]
        $OutputFilePrefix = "chunk",
 
        [Parameter(Mandatory = $false)]
        [Int32]
        $ChunkSize = 4096
    )
 
    Begin
    {
        Write-Output "Beginning file split..."
    }
 
    Process
    {
        if (-not (Test-Path -Path $OutputDirectory))
        {
            New-Item -ItemType Directory $OutputDirectory | Out-Null
            Write-Verbose "Created OutputDirectory: $OutputDirectory"
        }
 
        $FileStream = [System.IO.File]::OpenRead($InputFile)
        $ByteChunks = New-Object byte[] $ChunkSize
        $ChunkNumber = 1
 
        While ($BytesRead = $FileStream.Read($ByteChunks, 0, $ChunkSize))
        {
            $OutputFile = Join-Path -Path $OutputDirectory -ChildPath "$OutputFilePrefix$ChunkNumber"
            $OutputStream = [System.IO.File]::OpenWrite($OutputFile)
            $OutputStream.Write($ByteChunks, 0, $BytesRead)
 
            $OutputStream.Close()
 
            Write-Verbose "Wrote File: $OutputFile"
 
            $ChunkNumber += 1
        }
    }
 
    End
    {
        Write-Output "Finished splitting file."
    }
}
 
function Unsplit-Files
{
    [CmdletBinding()]
    Param (
        [Parameter(Mandatory = $true)]
        [String]
        $InputDirectory,
 
        [Parameter(Mandatory = $false)]
        [String]
        $InputFilePrefix = "chunk",
 
        [Parameter(Mandatory = $true)]
        [String]
        $OutputDirectory,
 
        [Parameter(Mandatory = $true)]
        [String]
        $OutputFile
    )
 
    Begin
    {
        Write-Output "Beginning file unsplit..."
    }
 
    Process
    {
        if (-not (Test-Path -Path $OutputDirectory))
        {
            New-Item -ItemType Directory $OutputDirectory | Out-Null
            Write-Verbose "Created OutputDirectory: $OutputDirectory"
        }
 
        $OutputPath = Join-Path -Path $OutputDirectory -ChildPath $OutputFile
        $OutputStream = [System.Io.File]::OpenWrite($OutputPath)
 
        $ChunkNumber = 1
        $InputFilename = Join-Path -Path $InputDirectory -ChildPath "$InputFilePrefix$ChunkNumber"
 
        while (Test-Path $InputFilename)
        {
            $FileBytes = [System.IO.File]::ReadAllBytes($InputFilename)
            $OutputStream.Write($FileBytes, 0, $FileBytes.Count)
 
            Write-Verbose "Unsplit File: $InputFilename"
 
            $ChunkNumber += 1
            $InputFilename = Join-Path -Path $InputDirectory -ChildPath "$InputFilePrefix$ChunkNumber"
        }
 
        $OutputStream.close()
    }
 
    End
    {
        Write-Output "Finished unsplitting file."
    }
}

Пример использования (импорт модуля, разбиение файла и объединение):

Import-Module C:\Split-Files.ps1
Split-Files -InputFile "путь_к_большому_файлу.zip" -OutputDirectory "путь_к_месту_сохранения" -ChunkSize РАЗМЕР_ЧАСТИ_В_БАЙТАХ -Verbose
Unsplit-Files -InputDirectory "путь_к_месту_хранения_частей_файла" -OutputDirectory "путь_к_месту_сохранению_объединенного_файла" -OutputFile имя_объединенного_файла.zip

MakeCab

В Windows присутствует встроенная утилита для создания файлов .cab, которую можно использовать для разделения файла на части. Порядок действий:

  1. Создайте текстовый файл ddf.txt с содержимым:
    .Set CabinetNameTemplate=test_*.cab; <-- Enter chunk name format
    .Set MaxDiskSize=900000; <-- Здесь вводим размер части
    .Set ClusterSize=1000
    .Set Cabinet=on;
    .Set Compress=off;
    .set CompressionType=LZX;
    .set CompressionMemory=21
    .Set DiskDirectoryTemplate=;
    путь_к_исходному_файлу
  2. Используйте команду
    makecab /f путь_к_файлу_ddf.txt
    в командной строке
  3. В результате в текущей рабочей папке командной строки будут созданы файлы .cab заданного размера.
  4. Для объединения файлов cab в исходный файл используйте команду
    extrac32 filecab путь_к_объединенному_файлу
    указывая путь к первому файл в очереди в качестве первого параметра.

Сторонние программы с функциями разделения файлов

Существуют сторонние приложения, специально предназначенные для разделения файлов на части, а также инструменты, которые имеют такую возможность как часть своего функционала. Начнем с самого распространенного варианта — архиваторы.

Архиваторы

Большинство архиваторов имеют возможность разделить создаваемый архив на несколько томов заданного размера. Если нам не требуется непосредственно архивация и нужно сэкономить место, достаточно создать архив без сжатия.

Например, в бесплатном архиваторе 7-Zip достаточно выбрать файл или файлы, нажать «Добавить», а потом настроить архив и размеры файлов, на которые он будет разбит, как на скриншоте ниже:

Разделение файла в 7-zip

В WinRAR необходимые действия выполняются тем же образом, пример — на скриншоте:

Разделение файла в WinRAR

В обоих случаях размер тома архива можно выбрать из списка, либо ввести вручную в соответствии с вашими потребностями. При использовании этого метода рекомендую использовать формат ZIP, как самый поддерживаемый.

Получить исходный файл можно просто положив все файлы архива в одно расположения и распаковав архив любым архиватором.

Total Commander

Известный многим архиватор Total Commander имеет опцию разбивки и сбора файлов в меню «Файл».

Разделить файл в Total Commander

Достаточно выбрать файл на компьютере и использовать указанный пункт меню для разбивки файла с заданным размером частей.

Параметры разделения файла в Total Commander

В дальнейшем возможна сборка файла с помощью того же Total Commander.

Специальные утилиты для разбивки файлов

Также в Интернете вы можете найти множество утилит, которые специально предназначены для разделения файлов и их повторной сборки.

KFK File Splitter

Бесплатная утилита KFK имеет интерфейс на русском языке, достаточно понятный, чтобы объяснять, как именно им пользоваться не потребовалось, все действия для использования разбивки и обратной сборки очевидны:

KFK File Splitter

Официальный сайт для загрузки KFK File Splitter — https://www.kcsoftwares.com/?kfk

FFSJ (File Splitter & Joiner)

FFSJ — программа, очень похожая на первую в списке, но без русского языка интерфейса. Выглядит как на изображении ниже:

Программа File Splitter and Joiner

В программе представлены две основные вкладки — для разделения и объединения файлов, а также третья — для просмотра контрольных сумм файлов.

GSplit

GSplit — одна из самых популярных программ для разделения файлов с хорошим набором дополнительных функций, но, к сожалению, без русского языка интерфейса.

Программа GSplit для разделения файлов на части

Порядок простого использования GSplit:

  1. Выбираем исходный файл или несколько файлов в пункте «Original File».
  2. Задаем место сохранения разделенного файла в пункте «Destination Folder»
  3. Задаем размеры частей и тип частей в разделе Pieces — Type and Size.
  4. Запускаем разделение кнопкой Split.

В дальнейшем, когда потребуется, можно будет использовать кнопку Unite для объединения частей файлов.

Если требуется более простой подход и вариант настройки — используйте кнопку «Express» в меню программы. Также в инструменте вы найдете возможность создания «самообъединеняющихся» частей файлов: раздел Self-Uniting.

Скачать GSplit можно с официального сайта https://www.gdgsoft.com/gsplit

File Splitter (утилита командной строки)

Если вам требуется использование функций разделения файлов в командной строке, можно использовать консольную утилиту File Splitter, доступную бесплатно на GitHub разработчика https://github.com/dubasdey/File-Splitter

Пример использования утилиты:

fsplit -split 1024 kb c:\file.txt

Для объединения используем команду copy с параметром /a для текстовых и /b для произвольных двоичных файлов, пример:

copy /A test1.txt+test2.txt file.txt

Разделение PDF, MP3 и других медиа файлов

Часто пользователям требуется разделить не произвольный файл, а вполне конкретный и не на части, которые нужно затем соединять, а на фрагменты, каждый из которых можно просмотреть отдельно. Для этого можно использовать соответствующие редакторы PDF, редакторы аудио и видеоредакторы. Также может иметь смысл использование онлайн-сервисов:

Для разделения PDF файлов на части или страницы:

Для разделения MP3:

Надеюсь, есть читатели, для которых информация окажется востребованной. Если остаются вопросы или, возможно, есть дополнения к статье, жду вашего комментария.

Оставить комментарий

Интересное
Список инструкций Windows 11 Windows 10 Подписаться