Как разделить текстовый файл на части с равным количеством строк?
Доброго времени суток.
Имеется текстовый файл, количество строк в исходном тексте неизвестно, может пятьдесят, а может тысыча.
Нужно разбить его на несколько частей, так, чтобы количество строк в выходных файлах было одинаково (ну ± одна строка). Количество частей задается в самом батнике.
Поскольку я плохо разбираюсь в CMD, навалял такую белиберду на пять частей:
spoiler
:movech for %%I in (list.txt) do if %%~zI==0 (goto exit) @echo off setlocal enabledelayedexpansion set file=list.txt set first=1 set second=1 set out=V_Obrabotku1.txt set counter=0 >"%out%" for /f "usebackq tokens=*" %%A IN ("%file%") DO ( set /a counter=!counter!+1 if !counter! GEQ %first% ( if !counter! LEQ %second% ( echo.%%A>>"%out%" ) ) ) set n=1 set File_Src=list.txt set file_Dest=textfile_out.txt more +%n% < "%File_Src%" >"%file_Dest%" move /y textfile_out.txt list.txt ::V_Obrabotku2 set file=list.txt set first=1 set second=1 set out=V_Obrabotku2.txt set counter=0 >"%out%" for /f "usebackq tokens=*" %%A IN ("%file%") DO ( set /a counter=!counter!+1 if !counter! GEQ %first% ( if !counter! LEQ %second% ( echo.%%A>>"%out%" ) ) ) set n=1 set File_Src=list.txt set file_Dest=textfile_out.txt more +%n% < "%File_Src%" >"%file_Dest%" move /y textfile_out.txt list.txt ::V_Obrabotku3 set file=list.txt set first=1 set second=1 set out=V_Obrabotku3.txt set counter=0 >"%out%" for /f "usebackq tokens=*" %%A IN ("%file%") DO ( set /a counter=!counter!+1 if !counter! GEQ %first% ( if !counter! LEQ %second% ( echo.%%A>>"%out%" ) ) ) set n=1 set File_Src=list.txt set file_Dest=textfile_out.txt more +%n% < "%File_Src%" >"%file_Dest%" move /y textfile_out.txt list.txt ::V_Obrabotku4 set file=list.txt set first=1 set second=1 set out=V_Obrabotku4.txt set counter=0 >"%out%" for /f "usebackq tokens=*" %%A IN ("%file%") DO ( set /a counter=!counter!+1 if !counter! GEQ %first% ( if !counter! LEQ %second% ( echo.%%A>>"%out%" ) ) ) set n=1 set File_Src=list.txt set file_Dest=textfile_out.txt more +%n% < "%File_Src%" >"%file_Dest%" move /y textfile_out.txt list.txt ::V_Obrabotku5 set file=list.txt set first=1 set second=1 set out=V_Obrabotku5.txt set counter=0 >"%out%" for /f "usebackq tokens=*" %%A IN ("%file%") DO ( set /a counter=!counter!+1 if !counter! GEQ %first% ( if !counter! LEQ %second% ( echo.%%A>>"%out%" ) ) ) set n=1 set File_Src=list.txt set file_Dest=textfile_out.txt more +%n% < "%File_Src%" >"%file_Dest%" move /y textfile_out.txt list.txt Goto movech :exit
Скрипт работает, но уж больно громоздкий, да и тысячу строк довольно долго обрабатывает.
Подскажите, пожалуйста, более изящное решение. Заранее спасибо.
- Вопрос задан более трёх лет назад
- 15125 просмотров
4 комментария
Средний 4 комментария
Как разделить текстовый файл на несколько частей
Если есть многосточный текстовый файл, который нужно разделить на части — быстро и не вручную, то есть несколько вариантов для этого.

В порядке предпочтения/простоты использования и убывания приоритета:
1. С помощью Windows Powershell
Команда в одну строчку:
gc — сокращенный вариант команды GetContent (чтение файла);
file.txt — исходный многострочный файл, который нужно разделить на несколько с меньшим количеством строк;
1000 — число строк в каждом файле на выходе;
new_file$.txt — маска для имени файлов на выходе, вместо $ будет инкремент числа от 0 и далее.

Это самый простой и быстрый вариант, причем Powershell легко справится с большими файлами (2 миллиона строк и более).
Условие: пользователь должен хоть чуть-чуть дружить с командной строкой.
Дальше можно не читать 🙂
2. С помощью BAT-файла
Создать текстовый файл со следующим содержимым:

Сохранить его с расширением BAT в пустую папку. Скопировать в эту же папку текстовый файл, который необходимо разделить на части, указав его название (см. 3 срочку) и нужное количество строк в финальных результирующих файлах (см. 5 срочку). Сохранить изменения в BAT-файле.
Запустить BAT-файл и дождаться окончания работы.
Чтобы вручную не набирать текст батника, его содержимое:
@Echo Off
SetLocal enabledelayedexpansion
Set list=big_text_file.txt
REM ## Количество строк в выходных файлах:
Set str=500Set 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» установлен на меньшее значение, чем ваш файл.
Еще один минус онлайн-сервисов — не стоит загружать на непонятно чьи сайты свои важные и конфиденциальные файлы.
Разделить файл на части
Программа для онлайн деления любых файлов (Splitter), не требующая установки и не имеющая ограничение по размеру файла. Для разделения файла , просто задайте необходимое количество частей на которое нужно разделить. Затем нажмите «Разделить файл». После деления в нижней части интерфейса, появятся ссылки для сохранения, частей файла. Эта программа может работать офлайн, так как загрузки в облако не происходит. Для деления фалов размером в несколько гигабайт потребуются доли секунды. После этого вам может понадобится посмотреть файл большого размера.
Разделитель TXT документов
Разделите TXT на несколько файлов. Используйте TXT Splitter с любого устройства с браузером.
Загружая файлы или используя наш сервис, вы соглашаетесь с нашими Условиями использования. и Политикой конфиденциальности.
Мы уже обработали 175 876 файлов общим размером 478 278 Мбайт
Кликните между страницами, которые вы хотите разделить Выбрать все
Выбранные страницы: нет
Ваш файл успешно обработан
Отправить ссылку на скачивание
О приложении Splitter
Разделяйте TXT страницы документа быстро и легко. Бесплатный онлайн инструмент TXT Splitter без регистрации создан для быстрого разделения страниц из TXT файла. Вам не нужно тратить свое время на выполнение этих операций вручную на настольном программном обеспечении. Наша цель состоит в том, чтобы предоставить вам надежное решение для оптимизации вашего офисного рабочего процесса с помощью онлайн приложения TXT Splitter. Все TXT файлы обрабатываются на наших серверах, поэтому никаких дополнительных плагинов или установки программного обеспечения не требуется. Он мощный, современный, быстрый, гибкий, простой в использовании и полностью бесплатный.
- Легкое разделение TXT страниц документа
- Отделить страницы от TXT файла
- Загрузка или отправка результирующего файла в виде вложения электронной почты
Как это работает
Как разделить TXT документ онлайн
Выберите и загрузите TXT документ, который хотите разделить.
Укажите необходимые номера страниц и нажмите кнопку Разделить.
Нажмите кнопку Скачать и сохраните разделенный TXT документ.
Чтобы отправить ссылку на скачивание документа по электронной почте нажмите кнопку Email.
Вопросы и ответы
Как разделить файл с помощью TXT разделителя документов?
Прежде всего, вам нужно выбрать и добавить TXT файл для разделения двумя способами: перетащить ваш TXT файл в белую область с меткой «Нажмите или перетащите свой файл сюда» или нажмите на эту область, а затем выберите нужный файл TXT с помощью проводника. Как только файл будет добавлен, зеленый индикатор выполнения начнет расти. После завершения процесса можно нажать кнопку Сохранить, а затем загрузить файл результата TXT.
Сколько времени занимает разделение TXT файла?
Обычно этот TXT Document Splitter работает быстро для небольших файлов за считанные секунды.
Безопасно ли разделять файл с помощью нашего бесплатного TXT Document Splitter?
Да, ссылка для скачивания файла результат TXT будет доступна только вам. Загруженный файл будет удален через 24 часа, а ссылка для загрузки перестанет работать по истечении этого периода времени. Никто не имеет доступа к вашему файлу. Разделитель документов TXT абсолютно безопасен.
Могу ли я разделить файл TXT на Linux, Mac OS или Android?
Да, вы можете использовать наш бесплатный TXT Document Splitter на любой операционной системе, в которой есть веб-браузер. Наш TXT Document Splitter работает онлайн и не требует установки программного обеспечения.
Какой браузер следует использовать для разделения TXT файла?
Для разделения файлов можно использовать любой современный браузер TXT, например, Google Chrome, Microsoft Edge, Firefox, Opera или Safari.
Формат обычного текстового файла
Файл с расширением .TXT представляет собой текстовый документ, содержащий обычный текст в виде строк. Абзацы в текстовом документе распознаются возвратом каретки и используются для лучшего расположения содержимого файла. Стандартный текстовый документ можно открыть в любом текстовом редакторе или текстовом редакторе в разных операционных системах. Весь текст, содержащийся в таком файле, имеет удобочитаемый формат и представлен последовательностью символов.
Другие форматы, поддерживаемые GroupDocs.Splitter
Вы также можете разделять документы других форматов. Полный список представлен ниже.