比较VBScript中文件的创建日期

时间:2015-01-20 19:55:17

标签: date if-statement vbscript

对于那里的人来说这可能非常明显,但我在尝试解决VBScript中的错误方面遇到了很多麻烦。在脚本中,我正在目录中运行一堆.zip文件,并处理创建日期在指定范围内的文件。

例如,如果用户输入两个参数9/3/2014和9/5/2014,我只想处理该日期范围内的zip文件。

这是我正在使用的if语句:

 If Mid(file.NAME,len(file.NAME)-3,4) = ".zip" AND 
 FormatDateTime(file.DateCreated, 2) >= Wscript.Arguments(1) AND 
 FormatDateTime(file.DateCreated, 2) <= Wscript.Arguments(2) then

我正在使用FormatDateTime函数从文件创建日期中删除时间。这样我就应该留下一个短日期(mm / dd / yyyy)。

我遇到的问题是我正在处理给定范围之外的日期。例如,如果给定范围是9/3/2014到9/5/2014,那么由于某种原因,我也最终处理9/30/2014。任何人都可以帮忙解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

FormatDateTime()的返回值和.Argments的项都是字符串。 (stringyfied)数字的字符串比较将给出不方便的结果:

>> WScript.Echo CStr(5 < 30)
>> WScript.Echo CStr("5" < "30")
>>
True
False

使用CDate()将.Arguments转换为日期和DateDiff(),将它们与.DateCreated进行比较。

答案 1 :(得分:2)

找到问题的根源。 FormatDateTime返回一个字符串。此外,我传递的论点也是字符串。这意味着我实际上是在进行字符串比较而不是日期比较。 if语句应该是:

 If Mid(file.NAME,len(file.NAME)-3,4) = ".zip" AND 
 CDate(FormatDateTime(file.DateCreated, 2)) >= CDate(Wscript.Arguments(1)) AND 
 CDate(FormatDateTime(file.DateCreated, 2)) <= CDate(Wscript.Arguments(2)) then