Как разделить файл на части в Windows
Если для передачи, хранения или других целей вам потребовалось разделить большой файл на несколько частей, сделать это в Windows 11, 10 и предыдущих версиях системы можно несколькими способами: с помощью команд PowerShell и командной строки, в сторонних программах, или с помощью онлайн-сервисов, впрочем в последнем случае ОС не будет играть роли.
В этой инструкции подробно о нескольких способах разделить большой файл на несколько частей, а также кратко о разделении файлов различных типов: pdf и txt, видео и других.
Способы разделить большой файл на части
Эта часть инструкции не касается какого-то определенного типа файлов: разделяется любой файл, независимо от типа и содержимого — это может быть текстовый файл или двоичный, медиа или что-то ещё. Для большинства из них чтение станет невозможным до последующего объединения частей.
Разделение файла на несколько частей в PowerShell
Первая возможность — использовать команды и скрипты PowerShell.
FIleSplitter
Если вы не готовы самостоятельно писать такие скрипты, рекомендую использовать готовый модуль для разделения файлов:
- Запустите PowerShell от имени Администратора. В Windows 11 и Windows 10 это можно сделать, нажав правой кнопкой мыши по кнопке «Пуск» и выбрав пункт «Windows Powershell (Администратор)» или «Терминал Windows (Администратор)».
- Установите модуль FileSplitter с помощью команды
Install-Module -Name FileSplitter
в процессе потребуется подтвердить установку вводом Y и нажатием Enter. - После того, как модуль установлен, в 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, которую можно использовать для разделения файла на части. Порядок действий:
- Создайте текстовый файл 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=; путь_к_исходному_файлу
- Используйте команду
makecab /f путь_к_файлу_ddf.txt
в командной строке - В результате в текущей рабочей папке командной строки будут созданы файлы .cab заданного размера.
- Для объединения файлов cab в исходный файл используйте команду
extrac32 filecab путь_к_объединенному_файлу
указывая путь к первому файл в очереди в качестве первого параметра.
Сторонние программы с функциями разделения файлов
Существуют сторонние приложения, специально предназначенные для разделения файлов на части, а также инструменты, которые имеют такую возможность как часть своего функционала. Начнем с самого распространенного варианта — архиваторы.
Архиваторы
Большинство архиваторов имеют возможность разделить создаваемый архив на несколько томов заданного размера. Если нам не требуется непосредственно архивация и нужно сэкономить место, достаточно создать архив без сжатия.
Например, в бесплатном архиваторе 7-Zip достаточно выбрать файл или файлы, нажать «Добавить», а потом настроить архив и размеры файлов, на которые он будет разбит, как на скриншоте ниже:
В WinRAR необходимые действия выполняются тем же образом, пример — на скриншоте:
В обоих случаях размер тома архива можно выбрать из списка, либо ввести вручную в соответствии с вашими потребностями. При использовании этого метода рекомендую использовать формат ZIP, как самый поддерживаемый.
Получить исходный файл можно просто положив все файлы архива в одно расположения и распаковав архив любым архиватором.
Total Commander
Известный многим архиватор Total Commander имеет опцию разбивки и сбора файлов в меню «Файл».
Достаточно выбрать файл на компьютере и использовать указанный пункт меню для разбивки файла с заданным размером частей.
В дальнейшем возможна сборка файла с помощью того же Total Commander.
Специальные утилиты для разбивки файлов
Также в Интернете вы можете найти множество утилит, которые специально предназначены для разделения файлов и их повторной сборки.
KFK File Splitter
Бесплатная утилита KFK имеет интерфейс на русском языке, достаточно понятный, чтобы объяснять, как именно им пользоваться не потребовалось, все действия для использования разбивки и обратной сборки очевидны:
Официальный сайт для загрузки KFK File Splitter — https://www.kcsoftwares.com/?kfk
FFSJ (File Splitter & Joiner)
FFSJ — программа, очень похожая на первую в списке, но без русского языка интерфейса. Выглядит как на изображении ниже:
В программе представлены две основные вкладки — для разделения и объединения файлов, а также третья — для просмотра контрольных сумм файлов.
GSplit
GSplit — одна из самых популярных программ для разделения файлов с хорошим набором дополнительных функций, но, к сожалению, без русского языка интерфейса.
Порядок простого использования GSplit:
- Выбираем исходный файл или несколько файлов в пункте «Original File».
- Задаем место сохранения разделенного файла в пункте «Destination Folder»
- Задаем размеры частей и тип частей в разделе Pieces — Type and Size.
- Запускаем разделение кнопкой 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 файлов на части или страницы:
- Официальный инструмент разделения PDF файлов от Adobe — https://www.adobe.com/acrobat/online/split-pdf.html
- Неофициальный онлайн-сервис, но на русском: https://pdf.io/ru/split/
- И множество других.
Для разделения MP3:
- Сервис разделения аудио-файлов от veed.io
- Aspose Audio Splitter https://products.aspose.app/audio/ru/splitter/mp3
- И другие — в Интернете подобных онлайн-сервисов предостаточно.
Надеюсь, есть читатели, для которых информация окажется востребованной. Если остаются вопросы или, возможно, есть дополнения к статье, жду вашего комментария.