0
如果有以下VBScript用于递归查找一组文件夹中的所有文件。我只是在网络上发现了这一点,并不能赞扬它。查找在某个日期拍摄的所有照片
fileExtension = ".jpg"
folderPath = "C:\Pictures"
computerName = "."
arrFIL = Array()
If Right(folderPath,1) = "\" Then folderPath = Left(folderPath,Len(folderPath)-1)
Set wmiObject = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & computerName & "\root\cimv2")
Set folderObject = wmiObject.Get("Win32_Directory='" & folderPath & "'")
EnumFolders folderObject, wmiObject, arrFIL
strFIL = UBound(arrFIL) + 1 & " files found with extension '" & fileExtension & "':" & vbCrLf & vbCrLf
For intFIL = 0 To UBound(arrFIL)
Set objFile = objFSO.GetFile(arrFIL(intFIL))
strFIL = strFIL & arrFIL(intFIL) & vbCrLf
Next
WScript.Echo strFIL
Sub EnumFolders(folderObject, wmiObject, arrFIL)
On Error Resume Next
Dim objSD1
Dim objSD2
Dim objFI1
Dim objFI2
Set objSD1 = wmiObject.ExecQuery("Associators of {Win32_Directory.Name='" & fold erObject.Name & "'} Where AssocClass=Win32_SubDirectory ResultRole=PartComponent")
For Each objSD2 in objSD1
EnumFolders objSD2, wmiObject, arrFIL
Next
On Error Goto 0
Set objFI1 = wmiObject.ExecQuery("Associators of {Win32_Directory.Name='" & folderObject.Name & "'} Where ResultClass=CIM_DataFile")
For Each objFI2 in objFI1
If Right(objFI2.Name,Len(fileExtension)) = fileExtension Then
intFIL = UBound(arrFIL) + 1
ReDim Preserve arrFIL(intFIL)
arrFIL(intFIL) = objFI2.Name
End If
Next
End Sub
我需要做的是对一堆文件夹运行此,C中:\图片,并将它返回的所有文件存放照片的拍摄日期属性是本月23日。这可能吗?我将如何实现这一目标?
感谢
谢谢你回来给我这么快。但是,我收到'Type mismatch:'[string:“?23 /?05 /?2012 ?? 11:3”]''作为错误消息。当我输出文件夹中所有文件的日期时,它们似乎被包裹在'?' – Danny 2013-03-29 22:02:43
我还不得不取出'ElseIf LCase(obj.Type)=“jpeg image”然后'并将其替换为标准'Else'。 – Danny 2013-03-29 22:05:57
我明白了。 '采取日期'字段似乎使用某种编码。虽然您可以简单地使用正则表达式删除其他字符(请参阅更新后的答案)。至于类型,您可能需要将引用字符串('“jpeg image”')调整为系统上指定的类型。如果你想处理不同类型的图片,你必须扩展支票(或者如果你想要处理所有文件,请将其全部删除)。 – 2013-03-30 11:22:47