VBScript:需要根据创建的日期和文件名中的字符串设置变量

时间:2012-07-16 15:16:50

标签: date vbscript wildcard

我正在创建一个需要一些VBScript的SQL Server集成包。基本上,每隔几天就会有一个文件上传到我的计算机上的文件夹中。此文件始终具有不同的名称,但它始终包含相同的字符串。

例如,昨天的文件可能是“John J July 15.xlsx”,明天的文件可能是“John Jones Jul 17 2012.xlsx”。他们都包含“约翰”,他们总是会。我总是希望将我的变量设置为等于包含“John”的文件的文件名,并且DateCreated属性等于今天。

我的代码有问题吗?我无法让它发挥作用。 “Today.Date”也回归了吗?我只希望它返回一个日期。 Name属性是否也返回扩展名?

    Public Sub Main()
    Dim f, fl, fs As Object
    Dim filedate As Date = Microsoft.VisualBasic.Today.Date
    Dim firstFileName As String

    fs = CreateObject("Scripting.FileSystemObject")
    fl = fs.GetFolder("E:\myFolder")

    For Each f In fl.Files
        If f.DateCreated = filedate And f.Name = "John*" Then
            firstFileName = f.Name
            Dts.Variables("ExcelSource").Value = "E:\myFolder\" & firstFileName
        End If
    Next
    End Sub

1 个答案:

答案 0 :(得分:1)

我不相信上面的IF语句中的通配符可以按照您的意图运行。它会将文件名与 literal “*”字符进行比较,并且不匹配。我可能会建议:

* 编辑 :DateCreated属性确实解析为第二个,因此上面的比较也不起作用。这是一个非常粗略和未经测试的例子,您可以修改一种方法来测试正确的日期(省略秒分辨率)。 *

...
If Year(fileDate)=Year(f.DateCreated) and _
   Month(fileDate)=Month(f.DateCreated) and _ 
   Day(fileDate)= Year(f.DateCreated) and  _
   Left(f.Name,4)="John" Then
...