2014-02-26 77 views
0

我們有一個vbs腳本,在我們的夜間過程中運行,刪除舊備份,然後在晚上創建新備份。在我們的一些地點,我們遇到了刪除部分需要很長時間才能刪除的問題。VBS需要很長時間才能刪除

我在IT部門爲一家餐廳工作,此代碼由我們的軟件提供商編寫,他絕對沒有幫助。這太耗時了,導致商店無法按時開門。

下面是使用的代碼:

If FSO_FileExists(sDest & "\" & sZip) Then 
     FSO_DeleteFile(sDest & "\" & sZip) 
    End If 

Function FSO_DeleteFile(sFile) 
    Dim oErr: oErr = Err: Err.Clear 
    If Not bDebugScript Then On Error Resume Next 
    Dim fsName: fsName = "FSO_DeleteFile" 
    Dim oFSO: Set oFSO = CreateObject("Scripting.FileSystemObject") 
    oFSO.DeleteFile sFile, True 
    FSO_DeleteFile = (Err.Number = 0) 
    If IsObject(oLog) Then oLog.WriteLog fsName & ": " & sFile 
    If Err.Number <> 0 And IsObject(oLog) Then oLog.WriteLog "ERROR: " & fsName & ": (" & Err.Number & ") " & Err.Description 
    Err = oErr 
End Function 

Function FSO_FileExists(sFile) 
    Dim oErr: oErr = Err: Err.Clear 
    If Not bDebugScript Then On Error Resume Next 
    Dim fsName: fsName = "FSO_FileExists" 
    Dim oFSO: Set oFSO = CreateObject("Scripting.FileSystemObject") 
    Dim bExists 
    bExists = oFSO.FileExists(sFile) 
    FSO_FileExists = bExists 
    If IsObject(oLog) Then oLog.WriteLog fsName & ": (" & CStr(bExists) & ") " & sFile 
    If Err.Number <> 0 And IsObject(oLog) Then oLog.WriteLog "ERROR: " & fsName & ": (" & Err.Number & ") " & Err.Description 
    Err = oErr 
End Function 

該日誌顯示:

2014年2月26日04:22:17.825 FSO_FileExists:(真)d:\備份\ Logs.zip

2014年2月26日04:22:17.886 FSO_DeleteFile:d:\備份\ Logs.zip

2014年2月26日04:56:20.544 WSHShell_Run:「 「C:\ Zip.exe」 -D「 D:\ backup \ Logs.zip「*'結果(0)

顯然,34分鐘是很長時間才能刪除文件。我希望我已經提供了足夠的信息。如果我需要其他東西,請告訴我。

回答

0
  1. 如果相同的腳本在某些計算機上表現不佳,您應該檢查這些計算機的權限。
  2. 當你寫日誌之前(04:22:17.825 FSO_FileExists)和之後(04:22:17.886 FSO_DeleteFile)的刪除,刪除不是怪。
  3. 如果您在之後登錄ZIP進程(04:56:20.544 WSHShell_Run:'「C:\ Zip.exe」),那麼34分鐘的時間用於準備並執行壓縮;我在那裏集中進一步研究
+0

我認爲你在這裏是正確的。謝謝你的幫助! –

0

嘗試更換與此迴旋:

filename = oFSO.BuildPath(sDest, sZip) 
If oFSO.FileExists(filename) Then 
    oLog.Write "Deleteing file " & filename 
    On Error Resume Next 
    oFSO.DeleteFile filename 
    If Err Then oLog.Write "ERROR: " & filename & ": (" & Err.Number & ") " _ 
    & Err.Description 
    On Error Goto 0 
Else 
    oLog.Write "File " & filename & " not found" 
End If 

,腳本應該知道,如果它實例化一個記錄器或不那麼這是毫無意義每次寫日誌行的時間來檢查。

相關問題