Вопрос № 165130: здравствуйте. Есть текстовый файл, состоящий из 60 тыс.строк. В каждую пятую строчку необходимо вставить строчку: End ^ . Как это сделать не используя копи-паст? Вариант с заменой в Winword не подходит, т.к. символ ^ считается служебным. Файл...
Вопрос № 165.130
здравствуйте. Есть текстовый файл, состоящий из 60 тыс.строк. В каждую пятую строчку необходимо вставить строчку: End ^ . Как это сделать не используя копи-паст? Вариант с заменой в Winword не подходит, т.к. символ ^ считается служебным. Файл примерно такого типа:
Приложение:
Отправлен: 16.04.2009, 15:41
Вопрос задала: Lekasa (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 6)
Отвечает: Megaloman
Здравствуйте, Lekasa! Вот (можно загрузить!) VBS-скрипт, который решает Вашу задачу. Сохраните текст в текстовый файл, сохраните его с расширением .vbs в Windows - кодировке (критично при именах файлов с русскими буквами) В тексте поправьте пути к файлам. Запускайте как любой исполнимый файл.
Код:
' Читаем исходный текстовый файл. Обрабатываем. ' Результат пишем в другой файл
Dim FSO, Fin, Fout Set FS
O = CreateObject("Scripting.FileSystemObject") Set Fin = FSO.OpenTextFile(In_File, 1, False) Set Fout = FSO.CreateTextFile(Out_File, True, False)
On Error Resume Next i = 0
Do While True i = i + 1 If i = 5 Then ' В зависимости от потребности закомментируйте нужную строку (комментарий начинаеися с ') Stroka = Fin.ReadLine() + AddStr ' В каждую пятую строку в конец добавляем указанную подстроку. '
Stroka = AddStr ' После каждой четвёртой строки вставляю строку с указанной подстрокой. i = 0 Else Stroka = Fin.ReadLine() End If If Err.Number <> 0 Then Exit Do Fout.WriteLine Stroka Loop
Fin.Close Fout.Close
Так как я нечётко понял задачу (пытался уточнить в минифоруме), то предусмотрел 2 варианта. Сейчас скрипт добавляет в конец каждой пято
й строки заданный Вами текст. То есть, в Вашем примере вместо пустой строки будет записано End ^.
Если закомментировать строку
' Stroka = Fin.ReadLine() + AddStr ' В каждую пятую строку в конец добавляем указанную подстроку.
и убрать комментарий состроки
Stroka = AddStr ' После каждой четвёртой строки вставляю строку с указанной подстрокой.
то скрипт будет добавлять после каждой 4 строки новую строку с указанным Вами текстом
PS Как
я понимаю, в текстовом файле строка кончается символами LF и CR.
--------- Нет времени на медленные танцы
Ответ отправил: Megaloman (статус: Практикант)
Ответ отправлен: 16.04.2009, 19:17
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 247654 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5 Комментарий оценки: Спасибо за красивое решение)
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.