WQL 검색을 사용하여 VBScript를 사용하여 Windows 검색 유틸리티에 대한 대체 검색 유틸리티를 만들었지 만, 매우 느립니다. 속도를 높이고 싶습니다.하지만 WQL 검색 후 내 검색 필터를 배치해야하고 내 For Each
성명 이전에 검색 필터를 배치해야합니다. 이것은 가능한가?VBScript에서 WMI를 검색 한 후에 "For Each"문 전에 검색 필터를 만들 수 있습니까?
나는 이미 WQL 검색에서 필터링하여 테스트했지만, WQL 검색 후에 필터링하면 약 40 % 더 빠릅니다. 나는 또한 iFlags
과 함께 테스트를 해봤지만, MS는 그렇지 않다고 생각 되더라도 검색 속도를 상당히 늦추는 경향이 있습니다.
For Each
문이 다음 스크립트가 검색 필터에게이 파일을 열거 할 때마다 생성 후 필터 인 경우, 사용자는 파일 이름, 작성 날짜, 마지막으로 수정 한 날짜 및/또는 파일 크기별로 검색 할 수 있기 때문에
내가 게시 한 스 니펫을 살펴볼 때 이것은 아마도 더 적합 할 것입니다. 당신은 당신이하고있는 파일의 이름에 의존하기 때문에 (현지 시간 UTC로 변환, 포맷 파일 크기 등 IE)
Dim strSearchName, strComputer, objSWbemServices, objFile, colFiles
Dim strFileName, strReturnedFileName, strQueryDriveAndPath
strSearchName = "test" 'Text being searched for - change as needed
strQueryDriveAndPath = "PATH = '\\Drop_RW\\' AND DRIVE = 'D:'" 'Path and drive in which to search - change as needed
strComputer = "."
Set objSWbemServices = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFiles = objSWbemServices.ExecQuery("Select * from CIM_DataFile WHERE " & "" & strQueryDriveAndPath & "")
'* I'd like to place the call to "subCreateSearchString" here
On Error Resume Next
For Each objFile in colFiles
strReturnedFileName = objFile.Name
subCreateSearchString ' Search filter - it works when placed here
If strSearchForString Then
MsgBox "File matches:" & vbCrLf & strReturnedFileName
Else
MsgBox "File DOES NOT match" & vbCrLf & strReturnedFileName
End If
Next
Sub subCreateSearchString
'* Set Filename Variable for search:
strFileName = InStr(LCase(strReturnedFileName), LCase(strSearchName))
strSearchForString = strFileName
End Sub
와우 - 당신은 놀라운 지식을 가지고 있습니다! 모든 조언을 주셔서 대단히 감사합니다. 이제 수정해야 할 코드가 너무 많습니다. – user7207540
당신이 말할 수있는대로 (아마도) 나는 초심자가 고급 기술을 사용하려고 시도하는 것보다 조금 더 진보했다. 이것이 내가 배운 방법이다. 내 질문에 관해서는, 아마 그것을 반복하는 각 파일에 검색 문자열을 만들 필요가 없도록 내 코드를 수정하는 방법이 있을까요? 나는 당신에게 (또는 다른 사람들에게) 내가 배울 수있는 방향으로 나를 가리 키기 위해 코드를 작성하라고 요구하지 않는다는 점에 유의하십시오. 다시 한 번 감사드립니다! – user7207540
파일 이름에 문자열이 포함되어 있는지 확인하지 않고 파일 이름에 문자열이 포함되어 있는지 확인할 수 없습니다.스크립트 속도를 높이려면 WMI 쿼리를보다 구체적으로 만들어야하므로 결과가 더 적어집니다. –