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

Итак, для этого создадим блокнотом или любой другой аналогичной программой файл, который назовем, к примеру divide.bat и добавим туда следующие строки:

@Echo Off
SetLocal enabledelayedexpansion
Set list=%1%
:: Число строк в файле на выходе
Set str=%2

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>!nFile!.%list%
    ) Else Echo %%i>>!nFile!.%list%
)
Pause
Exit

Далее положим этот файл в папку с файлом, который нам нужно разбить на части и запустим его, например в FAR-е или Total Commander-е. При этом формат вызова будет примерно следующий:
 
divide.bat "имя файла.txt" 10000

 

где 10000 - это количество строк, которое будет содержаться в каждой разбиваемой части, включая предпоследнюю (в последней будет то - что останется).
 
 
Как Вы уже заметили, имя файла может содержать пробелы. Главное, не забывайте заключать его в кавычки по примеру, указанному выше.
 
Удачного Вам дня и успехов в постижении ОС Windows!

Add comment


Security code
Refresh