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