我正在尝试创建一个脚本来将网络打印机连接到用户计算机。 该脚本使用需要打印机作为参数的计算机名称。
打印机名称与其打印服务器名称相似,例如。 server_USA有打印机,如printer_USA01,printer_USA02。
但是当它到达第一个时,它会抛出错误“Sub或Function not defined”...为什么?
Set shl = WScript.CreateObject("WScript.Shell")
strName = Wscript.Arguments.Item(0)
'input Printer name
strPrinter = InputBox("Please enter share name of printer to install:", _
"Add network printer")
if strPrinter = "" then
msgbox "Can't be empty."
WScript.quit
elseif strPrinter Like "printer_USA*" then
strServer = server_USA
elseif strPrinter Like "printer_SPAIN*" then
strServer = server_SPAIN
else
'Printer name NOT registered, input printserver manually:
strServer = inputbox("Please enter the name of the printserver","printserver")
if strServer = "" then
msgbox "Can't be empty."
WScript.quit
End if
End if
'ADD
shl.run "RUNDLL32 PRINTUI.DLL,PrintUIEntry /ga /c\\" & strName & " /n\\" & strServer & "\" & strPrinter
答案 0 :(得分:6)
VBScript中没有Like运算符。您可以使用Instr。
if strPrinter = "" then
msgbox "Can't be empty."
WScript.quit
elseif Instr( 1, strPrinter, "printer_USA", vbTextCompare ) > 0 then
strServer = server_USA
vbTextCompare常量(值= 1)用于执行文本比较
答案 1 :(得分:0)
您可以使用 StrComp
以这种方式获得相同的结果
If StrComp(strPrinter,"printer_USA",vbTextCompare)=0 then
strServer = server_USA
End IF
等于 0
表示 strPrinter
和 printer_USA
之间的零差,忽略字母大小写因为我们使用 vbTextCompare
。
您可以将 vbTextCompare
替换为 1
,您将获得相同的结果。
如果字母大小写很重要,则可以使用 vbBinaryCompare
或 0
。
答案 2 :(得分:0)
一种使用选择大小写的方法。此版本的instr()区分大小写,但其他版本则不区分大小写。 instr()返回找到的子字符串的位置,该位置始终为1。
function test(restart){
...
}
答案 3 :(得分:0)
我使用了以下替代方法(VBScript正则表达式)… 使用的语法与LIKE稍有不同,但最简单的解决方案是成功进行匹配,类似于LIKE运算符。
dim regExp
set regExp=CreateObject("VBScript.RegExp")
regExp.IgnoreCase = true
regExp.Global = true
regxp.Pattern = ".*Test Pattern.*" ' example only, basic pattern
if regExp.Test(MyString) then
' match successful
end if