Здравствуйте. У меня есть список путей к файлам в формате txt.Вида:
Нужно выполнить построчный перебор каждого файла в списке (файлы тоже txt), но, с условиями. Что нужно сделать:
1. Найти поле "From"
2. Начать построчную запись в ячейку excel
3. Найти поле "To:"
4. Продолжить построчную вставку в следующую ячейку таблицы.
5. След условие и тд.
6. Достигнув конца файла, начать следующий по порядку.
Вот мои наработки.
Скрипт работает по другому принципу, хотел сначала все загнать в txt файл с разделителями, потом импортом утащить в Excel, не дошел даже до этого.
Пример текста для распарсивания:
Все они устроены одинаково, но основная проблема в том, что в некоторый файлах есть несколько адресов и тогда скрипт не работает. Например:
Надеюсь на помощь, образование экономическое, в программировании не шарю.
C:\1.txt
C:2.txt
C:2.txt
1. Найти поле "From"
2. Начать построчную запись в ячейку excel
3. Найти поле "To:"
4. Продолжить построчную вставку в следующую ячейку таблицы.
5. След условие и тд.
6. Достигнув конца файла, начать следующий по порядку.
Вот мои наработки.
Скрипт работает по другому принципу, хотел сначала все загнать в txt файл с разделителями, потом импортом утащить в Excel, не дошел даже до этого.
$sLines = _FileCountLines($file_spisok) ; число сток в файле-задании
$search_from = "From:"
$search_to = "To:"
$search_Date = "Date:"
$search_subject = "Subject:"
$search_attach = "Attachments:"
$search_end = '---------------------------------------'
$search_end2 = "---------------------------------------------------------------------------"
For $i = 1 To $sLines
$perebor = FileReadLine($file_spisok, $i) ;построчно считываем файл-задание, $perebor = полный путь к файлу логов
$failz = FileRead($perebor) ;открываем текущий файл из списка файла-задания, ;failz = полностью считанный файл логов
$aLines = StringSplit($failz, @CRLF, 1) ;массив, содержащий разбитые строки файла логов
for $i=1 To $aLines[0] ;построчное считывание лога, $i- считываемая строка
Global $FROM = StringInStr($aLines[$i],$search_from) ; содержат позиции найденных строк
Global $TO = StringInStr($aLines[$i], $search_to)
Global $DATE = StringInStr($aLines[$i], $search_Date)
Global $SUBJECT = StringInStr($aLines[$i], $search_subject)
Global $ATTACH = StringInStr($aLines[$i], $search_attach)
Global $END = StringInStr($aLines[$i], $search_end2)
;MsgBox(4096,"Значение переменных", "FROM =" & $FROM_S & @CRLF & "TO_S=" & $TO_S) ; отладка
Next
for $i=1 To $aLines[0]
While $i < $TO
FileWriteLine($file_output, $aLines[$i])
$i = $i + 1
WEnd
FileWrite($file_output, "/////////TOO////////////////////" & @LF)
While $i<$DATE
FileWriteLine($file_output, $aLines[$i])
$i = $i + 1
WEnd
FileWrite($file_output, "/////////DATEE////////////////////" & @LF)
While $i<$SUBJECT
FileWriteLine($file_output, $aLines[$i])
$i = $i + 1
WEnd
FileWrite($file_output, "//////////SUBJJ///////////////////" & @LF)
While $i<$ATTACH
FileWriteLine($file_output, $aLines[$i])
$i = $i + 1
WEnd
FileWrite($file_output, "/////////ATTAA////////////////////" & @LF)
While $i<$END
FileWriteLine($file_output, $aLines[$i])
$i = $i + 1
WEnd
FileWrite($file_output, "///////////ENDD//////////////////" & @LF)
if $i = $aLines[0] Then
ExitLoop
EndIf
Next
Next
$search_from = "From:"
$search_to = "To:"
$search_Date = "Date:"
$search_subject = "Subject:"
$search_attach = "Attachments:"
$search_end = '---------------------------------------'
$search_end2 = "---------------------------------------------------------------------------"
For $i = 1 To $sLines
$perebor = FileReadLine($file_spisok, $i) ;построчно считываем файл-задание, $perebor = полный путь к файлу логов
$failz = FileRead($perebor) ;открываем текущий файл из списка файла-задания, ;failz = полностью считанный файл логов
$aLines = StringSplit($failz, @CRLF, 1) ;массив, содержащий разбитые строки файла логов
for $i=1 To $aLines[0] ;построчное считывание лога, $i- считываемая строка
Global $FROM = StringInStr($aLines[$i],$search_from) ; содержат позиции найденных строк
Global $TO = StringInStr($aLines[$i], $search_to)
Global $DATE = StringInStr($aLines[$i], $search_Date)
Global $SUBJECT = StringInStr($aLines[$i], $search_subject)
Global $ATTACH = StringInStr($aLines[$i], $search_attach)
Global $END = StringInStr($aLines[$i], $search_end2)
;MsgBox(4096,"Значение переменных", "FROM =" & $FROM_S & @CRLF & "TO_S=" & $TO_S) ; отладка
Next
for $i=1 To $aLines[0]
While $i < $TO
FileWriteLine($file_output, $aLines[$i])
$i = $i + 1
WEnd
FileWrite($file_output, "/////////TOO////////////////////" & @LF)
While $i<$DATE
FileWriteLine($file_output, $aLines[$i])
$i = $i + 1
WEnd
FileWrite($file_output, "/////////DATEE////////////////////" & @LF)
While $i<$SUBJECT
FileWriteLine($file_output, $aLines[$i])
$i = $i + 1
WEnd
FileWrite($file_output, "//////////SUBJJ///////////////////" & @LF)
While $i<$ATTACH
FileWriteLine($file_output, $aLines[$i])
$i = $i + 1
WEnd
FileWrite($file_output, "/////////ATTAA////////////////////" & @LF)
While $i<$END
FileWriteLine($file_output, $aLines[$i])
$i = $i + 1
WEnd
FileWrite($file_output, "///////////ENDD//////////////////" & @LF)
if $i = $aLines[0] Then
ExitLoop
EndIf
Next
Next
Пример текста для распарсивания:
From: "Иван Иваныч" <Ivan @mail.ru>
To: chelovek @mail.ru
Date: 18.03.2016 9:13:10
Subject: Привет
Attachments: Котики.zip (6 842)
------------------------------------------------
Привет, прислал котов.
To: chelovek @mail.ru
Date: 18.03.2016 9:13:10
Subject: Привет
Attachments: Котики.zip (6 842)
------------------------------------------------
Привет, прислал котов.
From: "Иван Иваныч" <Ivan @mail.ru>
To: chelovek @mail.ru
Chel1 @ya.ru
Eche @rambler.
Date: 18.03.2016 9:13:10
Subject: Привет
Attachments: Котики.zip (6 842)
------------------------------------------------
Привет, прислал котов.
To: chelovek @mail.ru
Chel1 @ya.ru
Eche @rambler.
Date: 18.03.2016 9:13:10
Subject: Привет
Attachments: Котики.zip (6 842)
------------------------------------------------
Привет, прислал котов.
Надеюсь на помощь, образование экономическое, в программировании не шарю.