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

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

Nastasya 20-05-2011 17:31 1679720

Скрипт для обработки текстогового файла!
 
Помогите пожалуйста написать скрипт для обработки вот такого текстового файла :
paint 27.02.2011 23:00 1
paint 27.02.2011 23:00 1
calc 1.04.2011 23:00 3
#paint 2.04.2011 23:00 1
calc 3.04.2011 23:00 4
#calс 4.04.2011 23:00 1
paint 5.04.2011 23:00 5
#paint 6.04.2011 23:00 1
calc 1.04.2011 23:00 3
paint 7.04.2011 23:00 6
Нужно найти одиннаковые строки, при этом пропуская строки, начинающиеся с #, просуммировать числа из последней коллонки у одиннаковых строк и вывести суммы в ной текстовый файл!
Bat-файл я написала, а vbs не могу(((помогите пожалуйста!!Зараннее спасибо!!!!!

amel27 20-05-2011 19:35 1679777

Код:

Set dic = CreateObject("Scripting.Dictionary")
Set fso = CreateObject("Scripting.FileSystemObject")

Set fi1 = fso.OpenTextFile("file1.txt", 1)
Set fi2 = fso.OpenTextFile("file2.txt", 2, vbTrue)

While Not fi1.AtEndOfStream
  str = fi1.ReadLine
  If dic.Exists(str) Then
    dic.Item(str)=dic.Item(str)+1
  ElseIf Not Left(str,1)="#" Then
    dic.Add str, 1
  End If
Wend

For Each key In dic
  If dic.Item(key) > 1 Then
    fi2.WriteLine Mid(key,InStrRev(key," "))*dic.Item(key)
  End If
Next

fi1.Close
fi2.Close


Nastasya 20-05-2011 19:48 1679788

спасибо большое, но она почему-то не правильно считает((((

Ой, простите, все правильно!!а не подскажите еще как сделать так, чтобы он суммировал все строчки начинающиеся с paint, затем все строчки, начинающиеся с calc.А в файл бы выводилось- paint сумма
calc сумма
Буду премного благодарна!

amel27 21-05-2011 06:00 1679962

Код:

Set dic = CreateObject("Scripting.Dictionary")
Set fso = CreateObject("Scripting.FileSystemObject")

Set fi1 = fso.OpenTextFile("file1.txt", 1)
Set fi2 = fso.OpenTextFile("file2.txt", 2, vbTrue)

While Not fi1.AtEndOfStream
  str = Trim(fi1.ReadLine)
  cnt = Int(Mid(str,InStrRev(str," ")+1))
  str = Mid(str,1,InStr(str," ")-1)
  If dic.Exists(str) Then
    dic.Item(str)=cnt+dic.Item(str)
  ElseIf Not Left(str,1)="#" Then
    dic.Add str, cnt
  End If
Wend

For Each key In dic
  fi2.WriteLine key & vbTab & dic.Item(key)
Next

fi1.Close
fi2.Close


Nastasya 23-05-2011 21:29 1681322

Спасибо огромнейшее!!!!


Время: 03:04.

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