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.

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

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

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, редакторы аудио и видеоредакторы. Также может иметь смысл использование онлайн-сервисов:

Для разделения 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
  • И другие — в Интернете подобных онлайн-сервисов предостаточно.

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

Распределенное обучение с TensorFlow и Python

AI_Generated 05.05.2025

В машинном обучении размер имеет значение. С ростом сложности моделей и объема данных одиночный процессор или даже мощная видеокарта уже не справляются с задачей обучения за разумное время. Когда. . .

CRUD API на C# и GraphQL

stackOverflow 05.05.2025

В бэкенд-разработке постоянно возникают новые технологии, призванные решить актуальные проблемы и упростить жизнь программистам. Одной из таких технологий стал GraphQL — язык запросов для API,. . .

Распознавание голоса и речи на C#

UnmanagedCoder 05.05.2025

Интеграция голосового управления в приложения на C# стала намного доступнее благодаря развитию специализированных библиотек и API. При этом многие разработчики до сих пор считают голосовое управление. . .

Реализация своих итераторов в C++

NullReferenced 05.05.2025

Итераторы в C++ — это абстракция, которая связывает весь экосистему Стандартной Библиотеки Шаблонов (STL) в единое целое, позволяя алгоритмам работать с разнородными структурами данных без знания их. . .

Разработка собственного фреймворка для тестирования в C#

UnmanagedCoder 04.05.2025

C# довольно богат готовыми решениями – NUnit, xUnit, MSTest уже давно стали своеобразными динозаврами индустрии. Однако, как и любой динозавр, они не всегда могут протиснуться в узкие коридоры. . .

Распределенная трассировка в Java с помощью OpenTelemetry

Javaican 04.05.2025

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

Шаблоны обнаружения сервисов в Kubernetes

Mr. Docker 04.05.2025

Современные Kubernetes-инфраструктуры сталкиваются с серьёзными вызовами. Развертывание в нескольких регионах и облаках одновременно, необходимость обеспечения низкой задержки для глобально. . .

Создаем SPA на C# и Blazor

stackOverflow 04.05.2025

Мир веб-разработки за последние десять лет претерпел коллосальные изменения. Переход от традиционных многостраничных сайтов к одностраничным приложениям (Single Page Applications, SPA) — это. . .

Реализация шаблонов проектирования GoF на C++

NullReferenced 04.05.2025

«Банда четырёх» (Gang of Four или GoF) — Эрих Гамма, Ричард Хелм, Ральф Джонсон и Джон Влиссидес — в 1994 году сформировали канон шаблонов, который выдержал проверку временем. И хотя C++ претерпел. . .

C# и сети: Сокеты, gRPC и SignalR

UnmanagedCoder 04.05.2025

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

Нагромоздили кода вы не меряно, все это можно сделать гораздо компактнее.
Я не стал разбираться, т.к. реально много кода для такой задачи.

Из вашего описания не ясно как именно разбивать на строки:
1.брать первые несколько строк и писать в один файл, следующую порцию в другой и т.д.
2.берем одну строку кладем в первый файл, вторую — во второй и т.д., когда заканчиваются файлы начинаем снова с первого файла.

Пункт 2 реализовывается вообще элементарно в одном цикле чтения и с одним счетчиком файлов.
Пункт 1: нужно сначала подсчитать общее количество строк (можно циклом и счетчиком, а можно поиграть с find /c /v «» <имя файла>, понятно, что find будет работать гораздо быстрее, но не совсем понятно как find будет вести себя с пустыми строками, нужно поэксперименировать) и прикинуть по сколько строк будет приходиться на каждый из файлов. Затем с помощью for /f «skip=X» — читаем файл построчно с пропуском нужного количества строк, и подсчетом скопированных строк. Так же не сильно сложно. Я думаю, после ваших героических усилий вы сможете упростить ваш код.
Будут вопросы — кидайте сюда.

PS: PowerShell, конечно, гораздо мощнее, но его синтаксис кажется мне страшней, чем у батников, возможно это по тому, что то я язык cmd знаю, а пош до сих пор нет :-)

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

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

В порядке предпочтения/простоты использования и убывания приоритета:

1. С помощью Windows Powershell

Команда в одну строчку:

gc file.txt -readcount 1000 | ForEach-Object { $i=0 } { $_ | Out-File «new_file${i}.txt«; $i++}

gc — сокращенный вариант команды GetContent (чтение файла);

file.txt — исходный многострочный файл, который нужно разделить на несколько с меньшим количеством строк;

1000 — число строк в каждом файле на выходе;

new_file${i}.txt — маска для имени файлов на выходе, вместо ${i} будет инкремент числа от 0 и далее.

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

Это самый простой и быстрый вариант, причем Powershell легко справится с большими файлами (2 миллиона строк и более).

Условие: пользователь должен хоть чуть-чуть дружить с командной строкой.

Дальше можно не читать :)

  

2. С помощью BAT-файла

Создать текстовый файл со следующим содержимым:

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

Сохранить его с расширением BAT в пустую папку. Скопировать в эту же папку текстовый файл, который необходимо разделить на части, указав его название (см. 3 срочку) и нужное количество строк в финальных результирующих файлах (см. 5 срочку). Сохранить изменения в BAT-файле.

Запустить BAT-файл и дождаться окончания работы.

Чтобы вручную не набирать текст батника, его содержимое:

@Echo Off
SetLocal enabledelayedexpansion
Set list=big_text_file.txt
REM ## Количество строк в выходных файлах:
Set str=500

Set Num=%str%& Set File=0
For /F «tokens=* usebackq delims=» %%i In («%list%») Do (
Set /a Num+=1
If !Num! GEQ %str% (
Set Num=0
Set /a File+=1
Set nFile=0!File!
Set nFile=!nFile:~-2!
Echo %%i>New_File!nFile!.txt
) Else Echo %%i>>New_File!nFile!.txt
)
Pause
Exit

3. С помощью Windows-приложения

Есть несколько таких программ — как бесплатных, так и платных.

Возможно, позже будут приведены примеры.

4. С помощью Web-приложения

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

Некоторые из них при проверке совсем отказались работать, один отработал вроде бы корректно, но скачивать по-одному 30 текстовых файлов совсем не радовало — разработчики данного сервиса могли бы добавить архивирование пакета файлов в один, чтобы было удобно скачивать результат.

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

Также при использовании больших файлов — размером 100 Мб и более может быть проблемс с загрузкой — она может оборваться в процессе из-за нестабильного или низкоскоростного интернет-соединения, или у сервера параметр «max_upload_size» установлен на меньшее значение, чем ваш файл.

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

Комментарии ()

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

 С помощью BAT-файла

Создайте текстовый файл со следующим содержимым:

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

Сохранить его с расширением BAT в пустую папку. Скопировать в эту же папку текстовый файл, который необходимо разделить на части, указав его название (см. 3 срочку) и нужное количество строк в финальных результирующих файлах (см. 5 срочку). Сохранить изменения в BAT-файле.

Запустить BAT-файл и дождаться окончания работы.

Чтобы вручную не набирать текст батника, его содержимое:

@Echo Off
SetLocal enabledelayedexpansion
Set list=big_text_file.txt
REM ## Количество строк в выходных файлах:
Set str=500

Set Num=%str%& Set File=0
For /F «tokens=* usebackq delims=» %%i In («%list%») Do (
 Set /a Num+=1
 If !Num! GEQ %str% (
 Set Num=0
 Set /a File+=1
 Set nFile=0!File!
 Set nFile=!nFile:~-2!
 Echo %%i>New_File!nFile!.txt
 ) Else Echo %%i>>New_File!nFile!.txt
)
Pause
Exit

Еще если выбрать в контекстном меню пункт изменить содержимое, в файле будет строка вроде этой Set list=Tree Aeon.txt — Tree Aeon в ней нужна чтобы задать имя разбиваемого файла, txt вероятно задать формать файла.

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

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как самому переустановить windows на ноутбуке
  • Загрузка windows 7 стоит на месте
  • Microsoft pictures windows 7
  • Windows 10 full restart
  • Менеджер томов windows 10