如何解决如何在Vbscript的Exists方法字典中使用值项而不是键进行搜索?
Dim d ' Create a variable.
Set d = CreateObject("Scripting.Dictionary")
d.Add "a","Athens" ' Add some keys and items.
d.Add "b","Belgrade"
d.Add "c","Cairo"
问题:
我可以编写逻辑来检查键d.Exists("Cario")
的{{1}}值是否为int
??
解决方法
Items方法可帮助我们获取存储在数据字典对象的键值对中的值。
object.Items( )
Option Explicit
Dim d,Capital,i,Capital2Search
Set d = CreateObject("Scripting.Dictionary")
d.Add "a","Athens" ' Add some keys and items.
d.Add "b","Belgrade"
d.Add "c","Cairo"
'Items Method helps us to get the values stored in the key value pair of the data dictionary object.
'object.Items( )
Capital = d.items
For i=LBound(Capital) to UBound(Capital)
wscript.echo Capital(i)
Next
'Searching for Cairo
Capital2Search = "Cairo"
For i=LBound(Capital) to UBound(Capital)
If Instr(UCASE(Capital(i)),UCASE(Capital2Search)) > 0 Then
wscript.echo Capital2Search & " Exists ! "
End If
Next
编辑:13/08/2020 @ 18:00
请参阅您的最后一条评论:您可以执行以下操作:
Option Explicit
Dim Title : Title = "Find a Service by Name"
Dim Dico,objWMIService,colListOfServices,objService,Keys,ServiceName,Service2Search
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colListOfServices = objWMIService.ExecQuery("SELECT * FROM Win32_Service")
Set Dico = CreateObject("Scripting.Dictionary")
' We fill our Dictionary in this loop For ... Next
For Each objService in colListOfServices
If Not dico.Exists(objService.Name) Then
Dico.Add objService.Name,objService.PathName
End If
Next
Service2Search = "Bits"
Keys = Dico.Keys
' Looking for a service name = "BITS" in this example :
For each ServiceName in Keys
If Instr(UCASE(ServiceName),UCASE(Service2Search)) > 0 Then
MsgBox "The service "& ServiceName & " : Exists !" & vbcrlf &_
"PahName : " & dico(ServiceName),vbInformation,Title
'Exit For
End If
Next
编辑:13/08/2020 @ 19:30
如果要搜索一系列服务:
Option Explicit
Dim Title : Title = "Find a Service by Name into an Array"
Dim Dico,Keys
Dim ServiceName,Services,ArrService2Search,Service2Search,PathName
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colListOfServices = objWMIService.ExecQuery("SELECT * FROM Win32_Service")
Set Dico = CreateObject("Scripting.Dictionary")
' We fill our Dictionary in this loop For ... Next
For Each objService in colListOfServices
If Not dico.Exists(objService.Name) Then
Dico.Add objService.Name,objService.PathName
End If
Next
ArrService2Search = Array(_
"Adobe",_
"Bits",_
"GoogleChromeElevationService",_
"gupdate",_
"gupdatem",_
"sedsvc",_
"SynTPEnhService"_
)
Services = Dico.Keys
' Looking for a service name in this array ArrService2Search :
For each Service2Search in ArrService2Search
For each ServiceName in Services
PathName = Dico(ServiceName)
If Instr(UCASE(ServiceName),UCASE(Service2Search)) > 0 Then
MsgBox "The service : " & chr(34) & ServiceName & chr(34) & " Exists !" & vbcrlf &_
"Path : "& chr(34) & PathName & chr(34),Title
End If
Next
Next
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。