Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   VBScript скрипт выборки части текат и удаления (http://forum.oszone.net/showthread.php?t=282140)

rested 12-05-2014 15:44 2350417

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

Iska 12-05-2014 16:06 2350431

Образцы файлов, упакованные в архив. Указать на примерах что потребно удалить.

rested 12-05-2014 16:45 2350452

Вот часть текста

в этом примере нужно оставить кусок от 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 2350500

Что неясного в тексте просьбы:
Цитата:

Цитата Iska
Образцы файлов, упакованные в архив. »

?!

rested 12-05-2014 18:33 2350512

Вложений: 1
прикрепил http://forum.oszone.net/attachment.p...1&d=1399905208

rested 13-05-2014 09:46 2350714

не посильная задача ?!

Iska 13-05-2014 11:18 2350766

Цитата:

Цитата rested
не посильная задача ?! »

Нет. Просто ещё не брался.

rested 13-05-2014 11:40 2350779

хорошо ждем, спасибо !!
и еще к информации там файлы с кодировкой unicode...

Iska 13-05-2014 11:56 2350788

Цитата:

Цитата rested
и еще к информации там файлы с кодировкой unicode... »

Собственно, для того, чтобы выяснить исходную кодировку файлов и наличие BOM — и просил файлы в архиве, а не просто в виде текста в посту.

mwz 13-05-2014 12:52 2350809

Цитата:

Цитата rested
не[]посильная задача ?! »

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

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

Код:

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

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


rested 14-05-2014 10:56 2351247

пока на дельфи почти все сделали, с вбс не как... видимо не посильно.

Iska 14-05-2014 20:32 2351493

Цитата:

Цитата rested
и еще к информации там файлы с кодировкой unicode... »

Это шутка такая, да? В приведённых Вами файлах — ANSI/1251. Никаким юникодом даже и не пахнет.

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

Да — и при частом повторе:
Цитата:

Цитата rested
не посильная задача ?! »

Цитата:

Цитата rested
пока на дельфи почти все сделали, с вбс не как... видимо не посильно. »

он не вызывает ничего, кроме раздражения.


Пробуйте:
читать дальше »
Код:

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


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


Время: 00:04.

Время: 00:04.
© OSzone.net 2001-