Другие языки программирования и технологии

Скопировать из текстового файла .txt часть строк c 1 по 3000, затем с 3000 по 6000 и так до конца файла.

Имеем текстовый файл в котором более 30 тысячи строк необходимо поделить этот файл на более мелкие. допустим по 3000 файл имеет вид
текст; текст

текст; текст

текст; текст
Yra Kovzalin
Yra Kovzalin
211
Сохрани в файл с расширением .vbs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

LinesInFile = 3000
FromFileName = "file.txt"
ToFileName = "result"
ExToFile = ".txt"

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile(FromFileName)
Set fromFile = File.OpenAsTextStream(1)

N = 0
K = 0
While Not fromFile.AtEndOfStream
str = fromFile.ReadLine()
If K = 0 then
N = N + 1
Set toFile = FSO.OpenTextFile(ToFileName & N & ExToFile, 2, True)
K = LinesInFile + 1
End If
toFile.WriteLine(str)
K = K - 1
If K = 1 then
toFile.Close
K = 0
End If
WEnd
If K > 0 Then
toFile.Close
End If
fromFile.Close

MsgBox "Готово! ", 4160

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Проверено на файле сформированном вот таким скриптом, который давал кому-то на днях:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.OpenTextFile("file.txt", 8, True)
For N = 0 To 99999999
TextStream.WriteLine(Right("00000000" & N, 8))
Next
TextStream.Close
PD
Pr1Nce D@t@n
62 606
Лучший ответ
считывать блоками, разбивать по строкам и при достижении 3000 сохранять. . не блоками, а строками
выделить текст не используя мышь легче простого:
Поставьте курсор на начало выделения - нажмите SHIFT и не отпуская тащите правый бегунок. После выделения нужного фрагмента - отпустите SHIFT и жмите копировать (crtl+c)

впрочем, есть и программка

http://www.softslot.com/software-1200-programma-razdeleniya-teksta.html
Юрий Семенихин
Юрий Семенихин
92 129
Если у вас Windows, то открываем powershell.exe (это нормальная консоль, а не сраный cmd.exe – есть по умолчанию начиная с Win 7)
Вводим:
$s = 3000; $a = cat 'C:\SomeFile.txt' | oss ## здесь укажите путь к вашему файлу
for ($i = 0; $i -lt $a.Count; $i+=$s) { $a[$i..($i+$s)] | Out-File "C:\$($i / $s).txt" }
В результате в папке 'C:\' имеем 0.txt, 1.txt итд
&-
>.p.s.i.x.< -Dreamer
62 975
ctrl-c, ctrl-v, ctrl-c, ctrl-v, ctrl-c, ctrl-v, ctrl-c, ctrl-v, ctrl-c, ctrl-v...
Евгений Иванов
Евгений Иванов
55 507