簡體   English   中英

VBScript 已移動並新建具有相同日期時間的文件

[英]VBScript moved and new created file with same date-time

我正在使用以下代碼來輪換日志文件。 如果 Log.txt 文件不同於當前日期時間(基於文件屬性.DateCreated),則使用 .DateCreated 值移動文件以重命名它,然后創建一個新的 Log.txt 文件,但新文件日期創建的值與移動(存檔)文件相同。

如果腳本在幾秒鍾后再次運行,它無法移動 Log.txt 文件,因為存檔版本已經存在。

Option Explicit

 Dim objFS: Set objFS = CreateObject("Scripting.FileSystemObject")
 Dim strLogPath: strLogPath = "C:\Logs"
 Dim strLogFQFN: strLogFQFN = objFS.BuildPath(strLogPath, "Log.txt")
 
  If objFS.FileExists(strLogFQFN) <> True Then
   WScript.Quit
  End If

  'As file exists, validate if archive is needed
  Dim objFile: Set objFile = objFS.GetFile(strLogFQFN)

  Dim dtmLog: dtmLog = objFile.DateCreated'DateValue(objFile.DateCreated)
  Dim dtmNow: dtmNow = Now 'Date
  Set objFile = Nothing
  WScript.Echo dtmLog
  WScript.Echo dtmNow
  If (dtmLog <> dtmNow) Then
   Dim tsDate: tsDate = DatePart("yyyy", dtmLog) & "-" & Right("0" & DatePart("m", dtmLog), 2) & "-" & Right("0" & DatePart("d", dtmLog), 2)
   Dim tsTime : tsTime = Right("0" & Hour(dtmLog), 2) & Right("0" & Minute(dtmLog), 2) & Right("0" & Second(dtmLog), 2)
   Call objFS.MoveFile(strLogFQFN, objFS.BuildPath(strLogPath, tsDate & "T" & tsTime & ".txt"))
   Call objFS.CreateTextFile(strLogFQFN, False)
  End If

第一次運行 - 原始文件 Log.txt 移動到 2022-03-11T014931.txt 並創建新的 Log.txt

第一次和第二次運行日期時間值和錯誤

謝謝

根據 LesFerch 的評論,我測試了添加 16 秒的延遲以克服默認的隧道緩存時間,並使用 C 驅動器解決了該問題。

Call objFS.MoveFile(strLogFQFN, objFS.BuildPath(strLogPath, tsDate & "T" & tsTime & ".txt"))
WScript.Sleep 16000
Call objFS.CreateTextFile(strLogFQFN, False)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM