2013-04-21 76 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

謝謝你們。這兩個解決方案都可行我發現Ansgar很簡單。 – user2304104 2013-04-22 07:12:27

1

遍歷所述文件夾中的文件,可使用一個正則表達式查找來處理,退出循環後的文件在處理了文件:

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