[英]Error: Object Required; 'objDIR' Code: 800A01A8
發布代碼之前遇到的問題...我遇到此錯誤
錯誤:對象必填; 'objDIR'代碼:800A01A8在第19行
當我使用On Error Resume Next and On Error GoTo 0
跳過它時,我得到了Error Object required: 'strFile' Line 22
我跳過它時,它告訴我我的上一個NEXT不是集合...這是程序的內容效果很好,直到我添加了獲取.tif和.tiff文件的步驟。 現在,即使刪除我添加的內容也不起作用...
該程序的功能是在“源目錄”中搜索可歸檔的文件,然后將這些文件移動到“目標目錄”,然后將其檢查為不可歸檔,以免再次被拾取。 它還記錄了使用日期戳等復制了哪些文件。就像我說的那樣,它工作得很好,但是經過幾個小時的修補后,仍然無法弄清楚出了什么問題...
Option Explicit
Dim objLogFile, objFS, strFolder, strDestination, objFolder, eFolder, strFileName,
strExtension, objDIR, strFile
Set objFS = CreateObject("Scripting.FileSystemObject")
strFolder = "S:\Source"
strDestination = "Z:\Destination"
Set objFolder = objFS.GetFolder(strFolder)
Set objLogFile = objFS.OpenTextFile ("S:\Log.txt",2,true)
Go(objFolder)
Sub Go(objDIR)
objLogFile.Writeline "Script started at " & Now
If objDIR <> "\System Volume Information" Then
For Each eFolder In objDIR.SubFolders
Go eFolder
Next
On Error Resume Next
For Each strFile In objDIR.Files
On Error GoTo 0
strFileName = strFile.Name
strExtension = objFS.GetExtensionName(strFile)
If strExtension = "pdf" Then
If objFS.GetFile(strFile).Attributes And 32 Then
objFS.CopyFile strFile , strDestination & strFileName, True
objLogFile.Writeline "Copied " & strFileName & Now
Else
objFS.GetFile(strFile).Attributes = objFS.GetFile(strFile).Attributes XOR 32
End If
End If
If strExtension = "tif" Then
If objFS.GetFile(strFile).Attributes And 32 Then
objFS.CopyFile strFile , strDestination & strFileName, True
objLogFile.Writeline "Copied " & strFileName & Now
Else
objFS.GetFile(strFile).Attributes = objFS.GetFile(strFile).Attributes XOR 32
End If
End If
If strExtension = "tiff" Then
If objFS.GetFile(strFile).Attributes And 32 Then
objFS.CopyFile strFile , strDestination & strFileName, True
objLogFile.Writeline "Copied " & strFileName & Now
Else
objFS.GetFile(strFile).Attributes = objFS.GetFile(strFile).Attributes XOR 32
End If
End If
Next
objFS.GetFile(strFile).Attributes = objFS.GetFile(strFile).Attributes XOR 32
End If
objLogFile.Writeline "Script ended at " & Now
objLogFile.close
WScript.Quit()
End Sub
要解決現實世界中的問題,您應該考慮:
c:\\windows
或C:\\System Volume Information
將減少風險並提高效率 dir /s /bc:\\can\\di\\date\\*.tiff >> process-later.txt
可能會給您的.vbs文件提供一個“干凈”的列表 有一個明顯的錯誤:您嘗試避免C:\\System Volume Information
,但是比較\\System Volume Information
(無驅動器)。
不太明顯的是:您不能使用
On Error Resume Next
For Each strFile In objDIR.Files
On Error GoTo 0
“跳過討厭元素的循環”。 OERN不能那樣工作。
我修復了代碼...不確定到底出了什么問題,但是我清理了腳本,它再次起作用。 這是代碼,以防其他任何人可能需要它。
Set objFS = CreateObject("Scripting.FileSystemObject")
strFolder = "S:\Source"
strDestination = "Z:\Destination\"
Set objFolder = objFS.GetFolder(strFolder)
Set objLogFile = objFS.OpenTextFile ("S:Logs.txt",2,true)
Go(objFolder)
Sub Go(objDIR)
objLogFile.Writeline "Script started at " & Now
If objDIR <> "\System Volume Information" Then
For Each eFolder In objDIR.SubFolders
Go eFolder
Next
For Each strFile in objDIR.files
strFileName = strFile.Name
strExtension = objFS.GetExtensionName(strFile)
If strExtension = "pdf" Then
If objFS.GetFile(strFile).Attributes And 32 Then
objFS.CopyFile strFile , strDestination & strFileName, True
objLogFile.Writeline "Copied " & strFileName & Now
objFS.GetFile(strFile).Attributes = objFS.GetFile(strFile).Attributes XOR 32
End If
End If
If strExtension = "tif" Then
If objFS.GetFile(strFile).Attributes And 32 Then
objFS.CopyFile strFile , strDestination & strFileName, True
objLogFile.Writeline "Copied " & strFileName & Now
objFS.GetFile(strFile).Attributes = objFS.GetFile(strFile).Attributes XOR 32
End If
End If
If strExtension = "tiff" Then
If objFS.GetFile(strFile).Attributes And 32 Then
objFS.CopyFile strFile , strDestination & strFileName, True
objLogFile.Writeline "Copied " & strFileName & Now
objFS.GetFile(strFile).Attributes = objFS.GetFile(strFile).Attributes XOR 32
End If
End If
Next
End If
objLogFile.Writeline "Script ended at " & Now
objLogFile.close
WScript.Quit()
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.