Date VBScript:需要根据文件名中创建的日期和字符串设置变量
我正在创建需要一些VBScript的SQL Server集成包。基本上,每隔几天就会有一个文件上传到我电脑上的文件夹中。此文件始终具有不同的名称,但始终包含相同的字符串 例如,昨天的文件可能是“John J July 15.xlsx”,明天的文件可能是“John Jones Jul 17 2012.xlsx”。它们都包含“约翰”,而且永远都会。我总是想将变量设置为包含“John”且DateCreated属性等于today的文件名 我的代码有问题吗?我不能让它工作。“今天.日期”也返回时间吗?我只想让它返回一个日期。Name属性是否也返回扩展名Date VBScript:需要根据文件名中创建的日期和字符串设置变量,date,vbscript,wildcard,Date,Vbscript,Wildcard,我正在创建需要一些VBScript的SQL Server集成包。基本上,每隔几天就会有一个文件上传到我电脑上的文件夹中。此文件始终具有不同的名称,但始终包含相同的字符串 例如,昨天的文件可能是“John J July 15.xlsx”,明天的文件可能是“John Jones Jul 17 2012.xlsx”。它们都包含“约翰”,而且永远都会。我总是想将变量设置为包含“John”且DateCreated属性等于today的文件名 我的代码有问题吗?我不能让它工作。“今天.日期”也返回时间吗?我只
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
我不相信上面IF语句中的通配符会按照您的意愿在这里工作。它会将文件名与文本“*”字符进行比较,但不匹配任何内容。我可以提出如下建议: *编辑:DateCreated属性解析为第二个,因此上面的比较也不起作用。下面是一个非常粗略且未经测试的示例,说明了一种可以修改以测试正确日期的方法(省略秒分辨率)*
看看我刚刚发布的修订版,可能会有帮助。您可能还必须将日期比较修改为特定的月份和日期,因为如果文件创建日期属性解析为第二个,我不会立即想起。这将导致if的另一半也失败…将日期格式化为不带时间的日期:Dim myDate myDate=FormatDateTime(f.DateCreated,2)我使用了sorceri的建议,也使用了您关于使用LEFT的建议。现在可以用了!!谢谢大家!
...
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
...