PDA

Показать полную графическую версию : VBScript скрипт выборки части текат и удаления


rested
12-05-2014, 15:44
Привет!
Поступила задача.
Имеется куча файлов, а именно это выгруженная почта в формате тхт.
Каждый файл это письмо, в не которых файлах есть форварды (FW:) и ответы (RE:)
Задача удалить часть текста именно форварды и ответы.
VBS только начал изучать, и на это потребуется время, а задачу нужно решить как можно быстрее.
Помогите пожалуйста!!

Iska
12-05-2014, 16:06
Образцы файлов, упакованные в архив. Указать на примерах что потребно удалить.

rested
12-05-2014, 16:45
Вот часть текста

в этом примере нужно оставить кусок от RE: до From:, сам from и то что ниже убить. Писем таких 1000 000



RE: Повышение окладов сотрудникам
Pan Vadim </O=FIRMA/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=PAN VAIM28F>
Khaas Boris </O=FIRMA/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=Khaas Bois6a2>
===

Доброе утро!

После праздников выходит? Правильно будет принимать решения с его участием.





С уважением,

Вадим Пан,

директор по инвестиционному и кадровому развитию

FIRMA

тел.: +99999999

факс: +99999999

моб.: +99999999

VPan@firma.ru

www.firma.ru



From: Khaas Boris
Sent: Wednesday, April 30, 2014 9:19 AM
To: Pan Vadim
Cc: Pyin Aleksandr; Denko Yuliya; Khaasov Marat
Subject: Fwd: Повышение окладов сотрудникам



Вадим,

Доброе утро!

Огромная просьба внимательно рассмотреть данный случай.

У меня огромная просьба не ухудшать то, что удалось с огромным трудом сохранить с прежним менеджментом.

Спасибо.

Б.Хаас

Отправлено с iPad


Начало переадресованного сообщения:

От: "Khaasov Marat" <mhaasov@firma.ru>
Кому: "Denko Yuliya" <YDenko@firma.ru>
Копия: "Khaas Boris" <BKhaas@firma.ru>
Тема: FW: Повышение окладов сотрудникам

Юлия, добрый вечер!

Пересылаю старую переписку с HR.

Эти инженеры работают у нас с июля 2011 данным 6 инженерам необходимо увеличить оклады на 70%.

С уважением,
Марат Хаасов,
FIRMA
Тел.: +99999999
Моб.: +99999999


From: Khaas Boris
Sent: Wednesday, April 30, 2014 9:19 AM
To: Pan Vadim
Cc: Pyin Aleksandr; Denko Yuliya; Khaasov Marat
Subject: Fwd: Повышение окладов сотрудникам



Вадим,

Доброе утро!

Огромная просьба внимательно рассмотреть данный случай.

У меня огромная просьба не ухудшать то, что удалось с огромным трудом сохранить с прежним менеджментом.

Спасибо.

Б.Хаас

Отправлено с iPad


Начало переадресованного сообщения:

От: "Khaasov Marat" <mhaasov@firma.ru>
Кому: "Denko Yuliya" <YDenko@firma.ru>
Копия: "Khaas Boris" <BKhaas@firma.ru>
Тема: FW: Повышение окладов сотрудникам

Юлия, добрый вечер!

Пересылаю старую переписку с HR.

Эти инженеры работают у нас с июля 2011 данным 6 инженерам необходимо увеличить оклады на 70%.

С уважением,
Марат Хаасов,
FIRMA
Тел.: +99999999
Моб.: +99999999

Iska
12-05-2014, 18:17
Что неясного в тексте просьбы:
Образцы файлов, упакованные в архив. »
?!

rested
12-05-2014, 18:33
прикрепил http://forum.oszone.net/attachment.php?attachmentid=113400&stc=1&d=1399905208

rested
13-05-2014, 09:46
не посильная задача ?!

Iska
13-05-2014, 11:18
не посильная задача ?! »
Нет. Просто ещё не брался.

rested
13-05-2014, 11:40
хорошо ждем, спасибо !!
и еще к информации там файлы с кодировкой unicode...

Iska
13-05-2014, 11:56
и еще к информации там файлы с кодировкой unicode... »
Собственно, для того, чтобы выяснить исходную кодировку файлов и наличие BOM — и просил файлы в архиве, а не просто в виде текста в посту.

mwz
13-05-2014, 12:52
не[]посильная задача ?! »

Это вопрос -- или ирония? Если ирония, то если хотите получить ответ -- лучше так не делать.

У вас избыточная постановка задачи. Алгоритм для одного файла более простой, примерно так:


Цикл:
Проверить начало строки,
Если она начинается с from: то выход из цикла
Прочитать строку и дописать её во временный файл
Проверить, есть ли следующая строка в исходном файле
Если нет, то выход из цикла
Перейти к следующей строке
Конец Цикла

Дописать пустую строку во временный файл
Переименовать исходный в *.bak
Переименовать временный файл в исходное имя

rested
14-05-2014, 10:56
пока на дельфи почти все сделали, с вбс не как... видимо не посильно.

Iska
14-05-2014, 20:32
и еще к информации там файлы с кодировкой unicode... »
Это шутка такая, да? В приведённых Вами файлах — ANSI/1251. Никаким юникодом даже и не пахнет.

Далее — зачем мне два одинаковых файла под разными именами? При нужде я могу проделать то же самое с ничуть не меньшим успехом, получив хоть сотню их. Мне нужны были примеры, образцы. Разные. Я, конечно, ценю юмор, но не настолько.

Да — и при частом повторе:
не посильная задача ?! »
пока на дельфи почти все сделали, с вбс не как... видимо не посильно. »
он не вызывает ничего, кроме раздражения.

Пробуйте:
Option Explicit

Dim strSourceFolder

Dim objFile
Dim objRegExp
Dim strContent


If WScript.Arguments.Count = 1 Then
strSourceFolder = WScript.Arguments.Item(0)

With WScript.CreateObject("Scripting.FileSystemObject")
If .FolderExists(strSourceFolder) Then
Set objRegExp = WScript.CreateObject("VBScript.RegExp")

With objRegExp
.IgnoreCase = True
.Pattern = ".*(RE:[\S\s]*?)From:.*"
End With

For Each objFile In .GetFolder(strSourceFolder).Files
If LCase(.GetExtensionName(objFile.Name)) = "txt" Then
With .OpenTextFile(objFile.Path)
strContent = .ReadAll()
.Close
End With

If objRegExp.Test(strContent) Then
objFile.Copy .GetBaseName(objFile.Name) & ".bak", True

With .CreateTextFile(objFile.Path)
.WriteLine objRegExp.Execute(strContent).Item(0).Submatches(0)
.Close
End With
End If
End If
Next

Set objRegExp = Nothing
Else
WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
WScript.Quit 2
End If
End With
Else
WScript.Echo "Usage: cscript.exe //nologo " & WScript.ScriptName & " <Source folder>"
WScript.Quit 1
End If

WScript.Quit 0

Можно просто перетащить исходную папку на скрипт.




© OSzone.net 2001-2012