VB脚本将日期字符串存储在文件名中并与当前日期进行比较

时间:2015-02-12 05:45:20

标签: vbscript

我有一个带有日期戳的文件名。我想将文件名中的日期与当前日期进行比较,并执行操作(如果文件较旧,则将文件移至“备份”文件夹)。

以下是文件格式的一些示例:

TEST_COPT_PART_TAX_09Feb2015_080529
TEST_COPT_PART_YTD_09Feb2015_080529

1 个答案:

答案 0 :(得分:1)

通常,在处理日期时应使用日期变量和函数(CDate,DateSerial,DateDiff,...)。但在这种特殊情况下,一种粗糙的方法可能会起作用:

(1)预先建立当前日期的字符串

>> dToday = Date()
>> sToday = Right("0" & Day(dToday), 2) & MonthName(Month(dToday), True) & Year(dToday)
>> WScript.Echo sToday
>>
12Feb2015

(2)在Mid()上使用InStr()或=来确定是否来移动文件。

如果失败 - 因为MonthNames或更改" old"在规范中 - 你需要剪切和重新格式化适合CDate()的文件名的日期部分:

>> WScript.Echo CDate("09Feb2015")
>>
Error Number:       13
Error Description:  Type mismatch
>> WScript.Echo CDate("09 Feb 2015")
>>
09.02.2015  <-- German Locale

或DateSerial():

>> s = Right("TEST_COPT_PART_TAX_09Feb2015_080529", 16)
>> d = DateSerial(CInt(Mid(s, 6, 4)), 2, CInt(Mid(s, 1, 2)))
>> WScript.Echo d
>>
09.02.2015  <-- German Locale

(将月份名称映射到适合DateSerial()的数字留作练习)