对于那里的人来说这可能非常明显,但我在尝试解决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。任何人都可以帮忙解决这个问题吗?
答案 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