invisan
Goto Top

VBScript und OR

Hi zusammen,

derzeit bastel ich ein bisschen in VBScript rum.
Leider habe ich mit dem OR Operator einige Probleme.
Ich versuche derzeit abzufragen ob der Computername einen bestimmten String enthält.
Dies habe ich mit Left und Right auch schon so beschränkt das er mir die Stellen 3 und 4 des Namens Ausgibt. In dem Fall die Länderkennung (49, 32 usw)
Die normale Abfrage funktioniert auch soweit so gut.
Hänge ich nun aber das OR hinterher wird es immer als korrekt gewertet.

Hier mal der derzeitige Code.
Der Ländercode ist in meinem Fall derzeit 49 von daher sollten eigentlich beide Skripte ins Else reinlaufen.
Leider tut es das mit einem OR beim IF leider nicht.


Funktioniert
Set objNetwork = CreateObject("Wscript.Network")  
strcomputername = ucase((objnetwork.computername))

Const ADS_PROPERTY_APPEND = 3

IF right(left(strcomputername,4),2) = "32" THEN  
  Set objNet = WScript.CreateObject("WScript.Network")  
  WScript.Echo "Your Computer Name is " & right(left(objNet.ComputerName,4),2)  
  WScript.Echo "Your Username is " & objNet.UserName  
 
 Else 
 
  Set objNet = WScript.CreateObject("WScript.Network")  
  WScript.Echo "Your Computer Name is " & objNet.ComputerName  
  WScript.Echo "Your Username is " & objNet.UserName  
  
 End IF


Funktioniert nicht
Set objNetwork = CreateObject("Wscript.Network")  
strcomputername = ucase((objnetwork.computername))

Const ADS_PROPERTY_APPEND = 3

IF right(left(strcomputername,4),2) = "32" OR "35" THEN  
  Set objNet = WScript.CreateObject("WScript.Network")  
  WScript.Echo "Your Computer Name is " & right(left(objNet.ComputerName,4),2)  
  WScript.Echo "Your Username is " & objNet.UserName  
 
 Else 
 
  Set objNet = WScript.CreateObject("WScript.Network")  
  WScript.Echo "Your Computer Name is " & objNet.ComputerName  
  WScript.Echo "Your Username is " & objNet.UserName  
  
 End IF

Content-Key: 335400

Url: https://administrator.de/contentid/335400

Printed on: April 18, 2024 at 06:04 o'clock

Member: rubberman
Solution rubberman Apr 18, 2017 updated at 11:26:41 (UTC)
Goto Top
Hallo Invisan,

nach dem OR erfolgt bei dir kein zweiter Vergleich.
kennung = right(left(strcomputername,4),2)
IF kennung = "32" OR kennung = "35" THEN  

BTW Schau dir mal Mid an.

Grüße
rubberman
Member: em-pie
em-pie Apr 18, 2017 updated at 12:33:11 (UTC)
Goto Top
Moin,

Set objNetwork = CreateObject("Wscript.Network")  
strcomputername = ucase((objnetwork.computername))


Const ADS_PROPERTY_APPEND = 3
DIM strComp '  <- Ergänzung, da sonst Fehlerhaft  
strComp=right(left(strcomputername,4),2)

IF ((strComp = "32") OR (strComp =  "35")) THEN  
  Set objNet = WScript.CreateObject("WScript.Network")  
  WScript.Echo "Your Computer Name is " & strComp  
  WScript.Echo "Your Username is " & objNet.UserName  
 
 Else 
 
  Set objNet = WScript.CreateObject("WScript.Network")  
  WScript.Echo "Your Computer Name is " & objNet.ComputerName  
  WScript.Echo "Your Username is " & objNet.UserName  
  
 End IF

Hast du es mal so versucht?

Gruß
em-pie
Member: Invisan
Invisan Apr 18, 2017 at 11:33:39 (UTC)
Goto Top
Hi em-pie,

danke für den Vorschlag.
Leider läuft das Skript in den Error Ungültige Zuweisung 'strcomp'.
Mit der Lösung von rubberman und dir zusammen klappt es aber.

Herzlichen Dank.
Member: Invisan
Invisan Apr 18, 2017 updated at 11:34:56 (UTC)
Goto Top
Top danke dir rubberman.
Auf die Idee mit Mid bin ich garnicht gekommen ^^"
Member: em-pie
em-pie Apr 18, 2017 at 12:31:48 (UTC)
Goto Top
Es fehlte ein (habe es oben ergänzt)
DIM strComp

Habe es oben angepasst.

Warum ich das im übrigen so angedacht habe:
dein String muss zur Laufzeit somit nur 1x zerfleddert werden und ich für jeden Vegleich aufs Neue.
Hat auch einen weiteren Aspekt: Wartungsfreundlichkeit. Musst du nun 3 STellig prüfen, wird es nur noch einmal im Skript angepasst und nicht mehr an 3 Stellen