0
我有一个文件名,其中包含日期戳记。我想将文件名中的日期与当前日期进行比较,如果较旧,则执行操作(将文件移动到“备份”文件夹中)。VB脚本将日期字符串存储在文件名中并与当前日期进行比较
以下是文件格式的一些例子:
TEST_COPT_PART_TAX_09Feb2015_080529
TEST_COPT_PART_YTD_09Feb2015_080529
我有一个文件名,其中包含日期戳记。我想将文件名中的日期与当前日期进行比较,如果较旧,则执行操作(将文件移动到“备份”文件夹中)。VB脚本将日期字符串存储在文件名中并与当前日期进行比较
以下是文件格式的一些例子:
TEST_COPT_PART_TAX_09Feb2015_080529
TEST_COPT_PART_YTD_09Feb2015_080529
一般情况下,使用日期时,你应该使用日期变量和函数(CDATE,DateSerial,则DateDiff,...)。但是,在这种特殊情况下,一粘性的策略可能会行得通:
(1)预建一个串上中旬当前日期
>> dToday = Date()
>> sToday = Right("0" & Day(dToday), 2) & MonthName(Month(dToday), True) & Year(dToday)
>> WScript.Echo sToday
>>
12Feb2015
(2)使用InStr函数()或=(),以确定是否不是移动文件。
如果失败了 - 因为MonthNames中或在规范“较老”的定义的变化 - 你需要削减和重新格式文件名的日期部分适合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()编号被留给读者作为练习)
我用下面的行删除文件中的扩展源文件夹以便用上述文件名取得任何类型的扩展名 fname = Left(ObjFile.Name,(InStrRev(objFile.Name,“。”,-1,vbTextCompare) - 1)) 下面的代码用于过滤“TEST_COPT_PART_TAX_”,以获得单独的日期部分 DateStampFilter =右(fname,18) 但我不能从文件名中取出日期。 之后,我需要根据sys时间格式化日期进行比较。 我在做上面的代码错了。显示一些光。 您的帮助非常感谢..! – 2015-02-17 11:02:06
@Carthiksharma - 没有灯光显示,因为从文件名中删除部分与我向您展示的两种方法无关,以确定给定名称是否属于今天。 – 2015-02-17 11:14:25