VBS aide à comparer des chaînes “Sub ou Function non définie”
Je suis en train de faire un script pour connecter une imprimante réseau à l'ordinateur d'un utilisateur.
Le script utilise le nom de l'ordinateur qui a besoin de l'imprimante en tant que paramètre.
Imprimantes noms sont similaires de leur printserver nom, par exemple. server_USA a des imprimantes comme printer_USA01, printer_USA02.
Mais c'est jeter l'erreur "Sub ou Function non définie" lorsque arrive au premier abord... pourquoi ?
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
- À ma connaissance, la
Like
opérateur n'est pas pris en charge en VBS. Essayez avec InStr au lieu
Vous devez vous connecter pour publier un commentaire.
il n'est pas Comme opérateur dans VBScript. Vous pouvez utiliser Instr.
La vbTextCompare constante ( valeur=1) est utilisé pour Effectuer une comparaison textuelle
vous pouvez utiliser
StrComp
pour avoir le même résultat de cette façonl'égalité des
0
moyenne nulle différents entrestrPrinter
etprinter_USA
à ignorer la casse des lettres, parce que nous utilisonsvbTextCompare
.Vous pouvez remplacer
vbTextCompare
avec1
et vous aurez le même résultat.Si la casse des lettres est important que vous pouvez utiliser
vbBinaryCompare
ou0
.Un moyen de le faire avec certains cas. Cette version instr() est sensible à la casse, mais les autres versions ne sont pas. instr() renvoie la position de la sous-chaîne trouvée, ce qui est toujours un.