VBScript,仅删除精确字符串
您好,我有下面的VBscript删除打印机,但当我运行它时,它也删除只是佳能IR70VBScript,仅删除精确字符串,vbscript,Vbscript,您好,我有下面的VBscript删除打印机,但当我运行它时,它也删除只是佳能IR70 Dim aPrinterModels(2) aPrinterModels(0)="Canon IR70 (Cpoy 1)" aPrinterModels(1)="Canon IR70 (Cpoy 2)" aPrinterModels(2)="Canon IR70 (Cpoy 3)" for each printer in aPrinterModels RemovePrinterAndPort(prin
Dim aPrinterModels(2)
aPrinterModels(0)="Canon IR70 (Cpoy 1)"
aPrinterModels(1)="Canon IR70 (Cpoy 2)"
aPrinterModels(2)="Canon IR70 (Cpoy 3)"
for each printer in aPrinterModels
RemovePrinterAndPort(printer)
next
Sub RemovePrinterAndPort(strModelMask)
on error resume next
msiMessageTypeError = &H01000000
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
'objWMIService.Security_.Privileges.AddAsString "SeLoadDriverPrivilege", True
Set colInstalledPrinters = objWMIService.ExecQuery("Select * from Win32_Printer where name like'" & strModelMask & "%'")
if colInstalledPrinters.count<>0 then
For each objPrinter in colInstalledPrinters
Set colInstalledPorts = objWMIService.ExecQuery("Select * from Win32_TCPIPPrinterPort where name like '" & objPrinter.PortName & "'")
objPrinter.Delete_
For Each objPort in colInstalledPorts
objPort.Delete_
Next
Next
end if
Set colInstalledPrinters = Nothing
Set colInstalledPorts = nothing
Set objWMIService = Nothing
End Sub
我怎样才能让它只删除aPrinterModels中的确切字符串
非常感谢。我无法尝试wmi查询与您的场景进行比较,但我会使用=比较,如下所示:
Set colInstalledPrinters = objWMIService.ExecQuery( _
"Select * from Win32_Printer where name = '" & strModelMask & "'")
只有在假定复制的打印机实例的端口与原始打印机端口不同的情况下,才会执行带有objPort.Delete的代码段。
在更可能的情况下,所有打印机实例的原始和副本都使用相同的端口:使用objPort.Delete修改代码段,以有条件地执行删除操作,或完全抑制该操作,并将未使用的端口作为独立任务删除:
for each printer in aPrinterModels
RemovePrinter(printer)
next
RemoveUnusedPorts
Sub RemovePrinter(strModelMask)
'on error resume next
msiMessageTypeError = &H01000000
Set objWMIService = GetObject( _
"winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colInstalledPrinters = objWMIService.ExecQuery( _
"Select * from Win32_Printer where name = '" & strModelMask & "'")
if colInstalledPrinters.count<>0 then
For each objPrinter in colInstalledPrinters
' wscript.Echo "Printer to Delete " & objPrinter.Name
objPrinter.Delete_
Next
end if
Set colInstalledPrinters = Nothing
Set objWMIService = Nothing
End Sub
Sub RemoveUnusedPorts
' code snippet to remove unused ports here
End Sub
如果要匹配精确的字符串,为什么不使用=来代替like?我有许多不同的打印机名称36,我想用它们来匹配,那么有没有办法只使用=来获得精确的字符串名称?