Обработка скриптом нескольких текстовых файлов

Программирование на Active Server Pages и VBScript.
tatarinov_vv
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 14.08.2012 (Вт) 12:57

Обработка скриптом нескольких текстовых файлов

Сообщение tatarinov_vv » 15.08.2012 (Ср) 7:05

Всем холодного Кластербрау, сушеной воблы и непадающего 12 ядерного сервера.
Комрады, любители ВижлБэйсика, на днях потребовалось написать скрипт на обработку логов. Из меня скриптописальщик такой же как из Шойгу фумелье и из Нино Катамадзе сварщик. Большую часть написал, и оно даже каким то образом работает. Притом оно работает правильно.
Мой скрипт делает следующее: в файле input.txt ищет "порядок символов" которое задаем и в новый файл output.txt записывает всю строку содержащую такой порядок. Т.е задав Иванов мы получим выборку всех его логов.
Пример скрипта который работает:
Код: Выделить всё
Option Explicit

Dim fso, tsIn, tsOut, str
Set fso= Createobject("Scripting.FileSystemObject")

Set tsIn = fso.OpenTextFile("input.txt", 1, 0) ' открываем файл для чтения
Set tsOut = fso.OpenTextFile("output.txt", 8, true, 0) ' открываем файл для дозаписи в конец, если файла нет создаем его

   Do While Not tsIn.AtEndOfStream
       str = tsIn.ReadLine 'читаем построчно исходный файл
       If UBound(Split(str, "Ivanov"))>0 Then 'ищем искомое слово в строке
       tsOut.WriteLine str 'записываем найденную строку в выходной файл
   End If
Loop
tsIn.Close
tsOut.Close
Set fso = Nothing


Собственно все это хорошо, но каждый день создается файл Лога формата "15.08.2012".
Как в VBS применить мой скрипт хотябы ко всем файлам .tхt находящимся в папке? В идеале конечно еще бы задавать диапазон файлов по месяцу (12.08.2012-15.08.2012). Короче необходимо наити Иванова во всех файлах и записать его в инпут.

Нашел где-то пример как считывать файлы из папки, но прикрутить его к моему скрипту не позволяет количество серого вещества:
Код: Выделить всё
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set fldr = objfso.getFolder("c:\FolderName")
Set objFiles = fldr.files
For Each iFile in objFiles
   sName = iFile.name


За помощь благодарствую. Жду ответа как соловей лета.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 15.08.2012 (Ср) 7:39

Ну так и запихай всё от открытия дайлов до их закрытия в For Each.

И вообще, я не понял, это VB6 или всё-таки VBS?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Обработка скриптом нескольких текстовых файлов

Сообщение Хакер » 15.08.2012 (Ср) 8:09

Это VBScript, так как в VB6 этот код был бы некорректным.
Перенесено в раздел по скриптам.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Обработка скриптом нескольких текстовых файлов

Сообщение alibek » 15.08.2012 (Ср) 8:21

tatarinov_vv писал(а):Нашел где-то пример как считывать файлы из папки, но прикрутить его к моему скрипту не позволяет количество серого вещества:

Снаружи цикла помести декларации и создание fso и tsOut.
Внутрь цикла помести весь остальной код (вместо "input.txt" используй iFile.name)
Lasciate ogni speranza, voi ch'entrate.

tatarinov_vv
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 14.08.2012 (Вт) 12:57

Re: Обработка скриптом нескольких текстовых файлов

Сообщение tatarinov_vv » 15.08.2012 (Ср) 8:25

Да это VBS, извиняюсь.
Большое спасибо за помощь

tatarinov_vv
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 14.08.2012 (Вт) 12:57

Re: Обработка скриптом нескольких текстовых файлов

Сообщение tatarinov_vv » 15.08.2012 (Ср) 14:33

alibek сделал как ты сказал, но выскакивает ошибка (файл не найден на строке ' открываем файл для чтения)

Код: Выделить всё
Option Explicit

Dim objfso, tsIn, tsOut, str, fldr, objFiles, iFile, sName

Set objfso= Createobject("Scripting.FileSystemObject")
Set tsOut = objfso.OpenTextFile("output.txt", 8, true, 0)    ' открываем файл для дозаписи в конец, если файла нет создаем его
Set fldr = objfso.getFolder("C:\Documents and Settings\vvtatarinov2\My Documents\парсинг текстового фала\Copy of выход")
                        ' указываем папку содержащую файлы логов
Set objFiles = fldr.files

For Each iFile in objFiles                ' цикл парсинга файлов
  sName = iFile.name

Set tsIn = objfso.OpenTextFile("iFile.files", 1, 0)       ' открываем файл для чтения

   Do While Not tsIn.AtEndOfStream
       str = tsIn.ReadLine             'читаем построчно исходный файл
       If UBound(Split(str, "Ivanov"))>0 Then       'ищем искомое слово в строке
       tsOut.WriteLine str             'записываем найденную строку в выходной файл
   End If

Loop

tsIn.Close
tsOut.Close
Set objfso = Nothing
next


подозреваю необходимо указать разрешение .тхт или как скрипту указать на фаилы? Файлы в папке есть!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Обработка скриптом нескольких текстовых файлов

Сообщение Хакер » 15.08.2012 (Ср) 14:35

tatarinov_vv писал(а):Set tsIn = objfso.OpenTextFile("iFile.files", 1, 0) ' открываем файл для чтения


Изображение

Код: Выделить всё
Set tsIn = objfso.OpenTextFile(iFile.Name, 1, 0)       ' открываем файл для чтения
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


Вернуться в ASP и VBScript

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 1

    TopList