1 (изменено: o4kapuk, 2013-04-04 12:50:41)

Тема: VBScript: Удалить строки из текстового файла

Здравствуйте! Помогите пожалуйста вот в таком деле. Есть текстовый файл, из которого надо удалить строки содержащие одинаковые элементы. Пример строк:


02.04.2013 03:06:07 285 205 2.83 001.33 096
02.04.2013 05:05:08 493 328 5.22 003.10 089
02.04.2013 06:00:07 438 394 4.94 006.28 096
02.04.2013 06:00:17 285 328 4.94 003.31 084   *
02.04.2013 06:00:47 493 205 5.01 001.33 089   *

* - строки которые надо удалить, т.к. там за одну минуту несколько строк, а надо оставить одну.
Подскажите технологию или способ. Если это имеет какое нибудь значение, файл довольно большой по объему.

2

Re: VBScript: Удалить строки из текстового файла

Хоть vbs/js-скриптом, хоть даже батником - построчно считывая файл, разбивать строки на составляющие с пробелом-раздилетелем, запоминать последнее выведенное в результатуирующий файл значение первых двух элементов (дата + время), если у последующих строк аналогичные элементы равны запомненным  - вывод пропускать, если разные - выводим и запоминаем новое значение.
См.хелп к DOS-команде for:

FOR /? 

и ищите примеры, их много разных.

WBR. Roman

3

Re: VBScript: Удалить строки из текстового файла

* - строки которые надо удалить,

o4kapuk, не могу понять, почему эти строки надо удалять. Что подразумевается под «одинаковыми элементами»?

4

Re: VBScript: Удалить строки из текстового файла

alexii, не совсем корректно написал, они совпадают по параметру даты и часов и минут, а надо оставить чтобы на каждую минуту была только одна строчка. Как-то так.

Rom5, спасибо! Попытаюсь разобраться с батником.

5

Re: VBScript: Удалить строки из текстового файла

o4kapuk пишет:

alexii, не совсем корректно написал, они совпадают по параметру даты и часов и минут, а надо оставить чтобы на каждую минуту была только одна строчка. Как-то так.

Ясно. Упакуйте пример реального файла в архив, выложите на RGhost, ссылку — сюда.

6 (изменено: o4kapuk, 2013-04-04 20:14:56)

Re: VBScript: Удалить строки из текстового файла

Ясно. Упакуйте пример реального файла в архив, выложите на RGhost, ссылку — сюда.

Вот ссылка http://rghost.ru/45042984

7

Re: VBScript: Удалить строки из текстового файла

Например, так:

Option Explicit

' IOMode Enum
Const ForReading   = 1
Const ForWriting   = 2
Const ForAppending = 8

' Format Enum
Const TristateUseDefault = -2
Const TristateTrue       = -1
Const TristateFalse      =  0


Dim objFSO
Dim objTSIn
Dim objTSOut

Dim strLine
Dim arrLine
Dim strDateTime
Dim strPartDateTime
Dim strPrevPartDateTime

Set objFSO   = WScript.CreateObject("Scripting.FileSystemObject")
Set objTSIn  = objFSO.OpenTextFile("E:\Песочница\0239\03042013A.txt", ForReading, False, TristateTrue)
Set objTSOut = objFSO.OpenTextFile("E:\Песочница\0239\Out.txt",       ForWriting, True,  TristateTrue)

strPrevPartDateTime = ""

With objTSIn
    Do Until .AtEndOfStream
        strLine = .ReadLine()
        arrLine = Split(strLine, " ")
        
        strDateTime = arrLine(0) & " " & arrLine(1)
        strPartDateTime = Left(strDateTime, Len(strDateTime) - 2)
        
        If strPartDateTime <> strPrevPartDateTime Then
            strPrevPartDateTime = strPartDateTime
            objTSOut.WriteLine strLine
        End If
    Loop
    
    .Close
End With

objTSOut.Close

Set objTSOut = Nothing
Set objTSIn  = Nothing
Set objFSO   = Nothing

WScript.Quit 0

Без каких-либо проверок, переписываний файла и создания резервных копий.

8

Re: VBScript: Удалить строки из текстового файла

alexii, спасибо большое! Работает как надо!