0

几天后,你们帮我解决了我在以下代码中遇到的错误:

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

'现在,将日期附加到任何带有 txt 扩展名的文件中。

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

我该如何处理?

更好的是,我可以在我发布的代码中添加一行代码以不允许覆盖 txt 文件吗?

非常感谢您的帮助。

4

1 回答 1

0

每天在“D:\ACS\Current\”下创建一个新的子文件夹,然后解压缩到该文件夹​​,如

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

或者

解压缩到一个临时文件夹并将那里的文件移动到“D:\ACS\Current\”,同时应用您的逻辑,这样它们就不会相互覆盖。

于 2012-05-18T15:10:45.037 回答