Войти

Показать полную графическую версию : [решено] Интересная операция с текстом


iccup.platoon@vk
24-12-2013, 06:31
Доброго времени суток.
Задача стоит в следующем - имеется файл такого содержания:

текст_первого_типа_1
текст_второго_типа_1
текст_третьего_типа_1
текст_первого_типа_2
текст_второго_типа_2
текст_третьего_типа_2
текст_первого_типа_3
текст_второго_типа_3
текст_третьего_типа_3
...

Мне нужно сделать так, чтобы, после обработки BAT-файлом, файл принял следующий вид:

текст_первого_типа_1 | текст_второго_типа_1 | текст_третьего_типа_1
текст_первого_типа_2 | текст_второго_типа_2 | текст_третьего_типа_2
текст_первого_типа_3 | текст_второго_типа_3 | текст_третьего_типа_3

Да, именно разделенные такими | палочками и обязательно с пробелами по обе "границы" (то есть [текст][пробел][|][пробел][текст][пробел][|][пробел][текст]. Я уже как только не мучался - пытался читать с трех разных файлов, клея строки... Ничего не выходит. Прошу Вашей помощи...

Iska
24-12-2013, 07:15
iccup.platoon@vk, многое зависит от того, в какой кодировке и с какими разделителями строк этот файл находится. Также малопонятно, что подразумевается под «текст_первого_типа_1», «текст_первого_типа_2» и т.д., по какому принципу их отбирать и группировать.

Выложите образец реального файла, упаковав его в архив. И на его примере укажите потребный результат.

iccup.platoon@vk
24-12-2013, 07:26
В архиве фалы исходник.тхт ("сырой" фаил) и результат.тхт (файл, который должен получиться после обработки).

Iska
24-12-2013, 08:01
Ага. Стало быть, задача такая — сгруппировать строки по трое с разделителем?

Правда, непонятно, как из строк:
Elven Relations
rutracker.org/forum/viewtopic.php?t=3407872
86 MB

может получиться:
Elven Relations | http://rutracker.org/forum/viewtopic.php?t=3407872 | 86 MB?


На WSH. Пробуйте:
Option Explicit

Dim strSourceFile
Dim strDestFile
Dim arrLines
Dim i


strSourceFile = "E:\Песочница\0338\задача\исходник.txt"
strDestFile = "E:\Песочница\0338\задача\результат.txt"

With WScript.CreateObject("Scripting.FileSystemObject")
If .FileExists(strSourceFile) Then
With .OpenTextFile(strSourceFile)
arrLines = Split(.ReadAll(), vbCrLf)

.Close
End With

ReDim Preserve arrLines(UBound(arrLines) - 1)

With .CreateTextFile(strDestFile, True)
For i = LBound(arrLines) To UBound(arrLines) Step 3
.WriteLine arrLines(i) & " | " & arrLines(i + 1) & " | " & arrLines(i + 2)
Next

.Close
End With
Else
WScript.Echo "Source file [" & strSourceFile & "] not found."
WScript.Quit 1
End If
End With

WScript.Quit 0

Последняя строка исходного файла должна завершаться символами конца строки (иначе уберите «ReDim Preserve arrLines(UBound(arrLines) - 1)»).

iccup.platoon@vk
24-12-2013, 08:51
Iska, про http - банальная опечатка, простите. А про wsh - в каком формате сей код сохранить?

Iska, при запуске говорится "сценарий не указан"

Вай, всё работает, большое спасибо! Я так понял, WSH получше бата? =) Спасибо, задача решена.

Iska
24-12-2013, 09:49
А про wsh - в каком формате сей код сохранить? »
Расширение — «.vbs», кодировка — ANSI/1251.

Я так понял, WSH получше бата? »
Больше возможностей.




© OSzone.net 2001-2012