2013-04-21 6 views
1

Я работаю с скриптом VB для чтения данных из текстового файла. Он работает нормально.Чтение данных из файла с определенным расширением

Мой вызов состоит в том, что имя файла меняется каждый день с добавленной к нему датой. Файл является текстовым файлом и заканчивается расширением .TXT. Таким образом, каждый раз, когда мне приходится переименовывать файл в фиксированное имя, которое я использовал в моем скрипте.

Есть ли способ прочитать файл из текущей папки и с расширением .TXT в зависимости от имени файла. В следующем коде я читаю файл SNMP.TXT, но имя файла может быть SNMP_20130415_xxxx.TXT в один день и SNMP_10130416_xxxx.TXT на следующий день и так далее.

Const ForReading = 1 
Const ForWriting = 2 
Const ForAppending = 8 

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objInpoutFile = objFSO.OpenTextFile("D:\scripts\vb\FileHandleScript\SNMP.TXT",1) 
Set objOutputFile = objFSO.OpenTextFile("D:\scripts\vb\FileHandleScript\snmp.csv",2,True) 

ответ

1

Альтернатива без регулярного выражения:

For Each f in objFSO.GetFolder("D:\scripts\vb\FileHandleScript").Files 
    name = LCase(f.Name) 
    If Left(name, 5) = "snmp_" And objFSO.GetExtensionName(name) = "txt" Then 
    'do stuff 
    End If 
Next 
+0

Спасибо, ребята. Оба решения работают. Я нашел Ансгара простым. – user2304104

1

Loop над файлами в папке, используйте RegExp, чтобы найти файл для обработки, выхода из цикла после обработки файла:

Dim reFiNa : Set reFiNa = New RegExp 
reFiNa.IgnoreCase = True 
reFiNa.Pattern = "^snmp_.+\.txt$" ' starting with snmp_, ending with .txt 
For Each oFile in objFSO.GetFolder("D:\scripts\vb\FileHandleScript").Files 
    If reFiNa.Test(oFile.Name) Then 
     ... process file ... 
     Exit For 
    End If 
Next 
Смежные вопросы