2012-05-18 55 views
0

幾天,你們幫我,我用下面的代碼有錯誤:如何將日期附加到只有txt擴展名的文件?

Set FSO = CreateObject("Scripting.FileSystemObject") 
Set fldr = FSO.GetFolder("C:\Ebooks\DRY\") 
curYr=Year(Now) 
For Each fil In fldr.Files 
    If LCase(Right(fil.Name, 4)) = ".zip" Then 
     zipFilePath = fil.Path 
     temp = file.Name 
     temp = Left(temp, LEN(temp) - 4) ' remove the .zip 
     temp = Split(temp, "_") ' split base name away from month-day-year 
     temp = (temp(ubound(temp))) ' get just month-day-year 
     temp = Split(temp, "-") ' get month day and year separately 
     mn = CINT(temp(0)) ' get the month number 
     dirName = MonthName(mn,True) & temp(2) ' True means get 3 letter abbrev for month 
     objZip.UnPack zipFilePath, "D:\ACS\Current\" 
     FSO.MoveFile zipFilePath, "D:\ACS\" & curYr & "\" & dirName & "\" & fil.Name  
    End If 
Next 

該腳本工作正常。所有解壓縮的文件都被移動到一個名爲Current的文件夾中,並且原始zip文件被移動到文件夾ACSCurrentYear。

解壓後的文件有2個不同的擴展名,pdf和txt。

星期一到星期五,代碼工作正常,我們每天都會將txt文件的內容提取到數據庫中。

但是,在週末,由於txt文件具有相同的名稱,所以它們被覆蓋,從而導致我們丟失數據。 PDF文件不會被覆蓋,因爲名稱始終是唯一的。

我想要做的是將當前日期和時間附加到只有txt擴展名的文件。

我想我有這樣做的代碼,但不知道如何將它集成到我上面發佈的腳本。

這是我想要整合的一點。

strDay = Day(now) 
strMonth = Month(now) 
strYear = Year(now) 

strHour = Hour(now) 
strMinute = Minute(now) 
strSecond = Second(now) 

datFinal = strYear & "/" & strMonth & "/" & strDay & " " & strHour & ":" & strMinute & ":" & strSecond 

'now,append date to any file with txt extension。

if lcase(FSO.GetExtensionName(fil.Name)) = "txt" then 
    fil.Name = "datFinal.txt" 

我該如何處理?

更好的是,我可以添加一行代碼到我發佈的代碼不允許txt文件被覆蓋?

非常感謝您的協助。

回答

0

要麼做一個新的子文件夾「d:\ ACS \當前\」下的每一天,並提取到該文件夾​​一樣

date_folder = strYear & strMonth & strDay 
FSO.CreateFolder ("D:\ACS\Current\" & date_folder) 
objZip.UnPack zipFilePath, "D:\ACS\Current\" & date_folder 

解壓到一個臨時文件夾中,有移動文件「D:\ ACS \ Current \」,同時應用您的邏輯,使它們不會相互覆蓋。

+0

第一個選項效果很好。 非常感謝Peter! –

+0

你好,我建議strMonth和strDay的結果來獲得一個很好的可排序的子文件夾列表,所以20120518而不是2012518 – peter

相關問題