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 に移動されます。

解凍されたファイルには、pdf と txt の 2 つの異なる拡張子が付いています。

月曜日から金曜日までの間、コードは毎日正常に動作し、txt ファイルの内容をデータベースに抽出します。

ただし、週末になると、txt ファイルが同じ名前であるため上書きされ、データが失われます。名前は常に一意であるため、pdf ファイルは上書きされません。

私がやりたいのは、拡張子が txt のファイルにのみ currentdate と time を追加することです。

私はそれを行うためのコードを持っていると思いますが、それを上に投稿したスクリプトに統合する方法がわかりません。

ここに私が統合したいビットがあります。

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 に答える