Vbscript VBS需要非常长的时间才能删除
我们有一个vbs脚本,它在夜间运行,删除旧备份,然后为夜间创建新备份。在我们的一些地方,删除部分花费了非常长的时间,我们遇到了问题 我在一家餐厅的IT部门工作,这段代码是由我们的软件供应商编写的,他根本帮不上忙。这花费的时间太长,导致商店不能按时营业 以下是使用的代码:Vbscript VBS需要非常长的时间才能删除,vbscript,scripting,Vbscript,Scripting,我们有一个vbs脚本,它在夜间运行,删除旧备份,然后为夜间创建新备份。在我们的一些地方,删除部分花费了非常长的时间,我们遇到了问题 我在一家餐厅的IT部门工作,这段代码是由我们的软件供应商编写的,他根本帮不上忙。这花费的时间太长,导致商店不能按时营业 以下是使用的代码: If FSO_FileExists(sDest & "\" & sZip) Then FSO_DeleteFile(sDest & "\" & sZip) End If
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_文件存在:True D:\backup\Logs.zip
2014年2月26日04:22:17.886 FSO_删除文件:D:\backup\Logs.zip
2014年2月26日04:56:20.544 WSHShell_Run:'C:\Zip.exe-D:\backup\Logs.Zip*'结果0
显然,删除一个文件34分钟是很长的时间。我希望我已经提供了足够的信息。如果我还需要什么,请告诉我。试着用以下内容替换那些令人费解的内容:
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
脚本应该知道它是否实例化了记录器,因此每次编写日志行时检查它是没有意义的
如果同一脚本在某些计算机上表现不好,则应检查这些计算机的特殊性。
当您在04:22:17.825 FSO_文件存在之前写入日志,并且在04:22:17.886 FSO_删除文件删除之后写入日志时,不应归咎于删除。
如果在ZIP进程04:56:20.544 WSHShell_运行后登录:“C:\ZIP.exe,那么34分钟用于准备和执行ZIP;我会在那里集中精力做进一步的研究