我们有一个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
日志显示:
02/26/2014 04:22:17.825 FSO_FileExists :(正确)D:\ backup \ Logs.zip
02/26/2014 04:22:17.886 FSO_DeleteFile:D:\ backup \ Logs.zip
02/26/2014 04:56:20.544 WSHShell_Run:'“C:\ Zip.exe”-D“D:\ backup \ Logs.zip”*'结果(0)
显然,删除文件需要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
脚本应该知道它是否实例化了一个记录器,所以每次写日志行时检查是没有意义的。
答案 1 :(得分:0)