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