2010-07-05 72 views
1

我有以下代碼(在網絡空間中操縱一些有用靈魂的代碼)。 這意味着要壓縮目錄中的所有.csv文件,並用當前時間戳命名zip文件。VBS腳本問題 - 操縱日期

我的問題 - 我已經設置了一個計劃任務,每天執行下面的代碼。正如你所看到的,我每次執行代碼時都會返回一天。意思是,今天用昨天的「日子」壓縮文件。當它在每個月的第一天運行時,我顯然遇到了問題。它會抓住昨天的日子(這很好),但當前的月份。我如何操作代碼,以便檢查昨天是否是本月的最後一天,併爲文件名輸入正確的時間戳?

任何幫助,非常感謝。

strFilepath = "c:\files" 
strDestination = "c:\files\completed\"  '"# 
strExtension = "csv" 

strYear = Year(Now) 
strMonth = Right("0" & Month(Now), 2) 
strDay = Right("0" & Day(Now -1), 2) 
strHour = Right ("0" & Hour(Now), 2) 
strMinute = Right ("0" & Minute (Now), 2) 
strZip = strFilepath & "\" & strYear & strMonth & strDay & strHour & strMinute & ".zip" '"# 

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFolder = objFSO.GetFolder(strFilepath) 
For Each objFile in objFolder.Files 
    strFileExt = objFSO.GetExtensionName(objFile.Path) 

     If LCase(strFileExt) = LCase(strExtension) Then 
     ZipFile objFile.Path, strZip 
    End If 
Next 

Sub ZipFile(strFileToZip, strArchive) 
    Set objFSO = CreateObject("Scripting.FileSystemObject") 

    If Not objFSO.FileExists(strArchive) Then 
     Set objTxt = objFSO.CreateTextFile(strArchive) 
     objTxt.Write "PK" & Chr(5) & Chr(6) & String(18, Chr(0)) 
     objTxt.Close 
    End If 

    Set objApp = CreateObject("Shell.Application") 

    intCount = objApp.NameSpace(strArchive).Items.Count + 1 

    objApp.NameSpace(strArchive).CopyHere strFileToZip 

    Do 
     WScript.Sleep 200 
     set objNameSpace = objApp.NameSpace(strArchive) 

     If Not objNameSpace is nothing Then   
      If objNameSpace.Items.Count = intCount Then 
       Exit Do 
      End If 
     End If 
    Loop 
End Sub 
+0

stackoverflow的問題? – ukanth 2010-07-05 09:33:51

+0

@TiNS:嘗試與類似的東西stackoverflow,並指示超級用戶:) – molecule 2010-07-05 09:54:58

+0

好吧,讓他們在這裏解釋爲什麼它會更適合蘇更好。 – 2010-07-05 20:58:34

回答

0

只需檢查Day(now)值。 It it = 1,那麼Month = Month -1。