Avatar billede jebaje Nybegynder
18. november 2006 - 18:36 Der er 4 kommentarer og
1 løsning

Sammenligning af strengværdier

Jeg er ny indenfor scripting, men er ved at lave et simpelt vb-script, der skal kopiere en genvej ud på allusers desktop. Der er dog bare lige det lille twist, at det kun er udvalgte maskiner, der skal have genvejen.

Mit script kan hente hostname på den PC hvorpå scriptet køres, og selve kopieringen af genvejen har jeg også styr på.

Dvs. det der driller mig er at jeg jo skal holde klientens hostname op imod en liste på ca 30 hostnames (kun hvis klientens hostname findes på listen, skal genvejen kopieres).

Lad os sige at jeg ved at genvejen skal installeres på følgende hostnames:
client01
client02
client03
client04
client05

Jeg kunne jo så løse problemet med en frygtelig masse if-sætninger efter hinanden.
f.eks.
IF GetHostname() = "client01" THEN
  CopyShotcut()
END IF
IF GetHostname() = "client02" THEN
  copyShotcut()
END IF
IF GetHostname() = "client03" THEN
  copyShotcut()
END IF
osv...

Der er dog helt sikkert en smartere og pænere måde at gøre det på når min target liste består af flere end 30 hostnames. Samtidig er det vigtig at sammenligningen ikke er case-sensitive (dvs. CLIent01 skal være lig med client01).

Jeg har tænkt på at jeg nok skal have værdierne ind i et array og sammenligne klientens hostname mod dette, men kan ikke helt gennemskue hvordan jeg gør det pænest.

På forhånd tak for hjælpen
Avatar billede morhan Novice
18. november 2006 - 18:52 #1
du kan lave en kommasepareret liste, og splitte den op i et array

hostnames = "client01,client02,client03"
hostnames = Split(hostnames, ",")

myhostname = LCase(GetHostName())

For i=0 To UBound(hostnames)
    If hostnames(i) = myhostname Then
        copyShortcut()
        Exit For
    End If
Next
Avatar billede morhan Novice
18. november 2006 - 18:57 #2
du behøver vel ikke engang et array til den opgave

hostnames = ",client01,client02,client03,"
myhostname = "," & LCase(GetHostName()) & ","

If InStr(hostnames, myhostname) Then
  copyShortCut()
End If
Avatar billede jebaje Nybegynder
18. november 2006 - 19:28 #3
Tak for svar. Ved nærmere eftertanke kunne jeg egentlig godt tænke mig at have hostnames liggende i en txt-fil (der jo efterfølgende er let at redigere i ved ændringer). Og så få indlæst værdierne i et array som jeg så tjekker myhostname op imod jvf. dit første indlæg.
Avatar billede jebaje Nybegynder
18. november 2006 - 22:25 #4
Jeg har fundet løsningen på at hive text-filen ind i et array. Det var faktisk overraskende simpelt. "morhan" tak fordi du ledte mig på vej med split funktionen som jeg ikke kendte til. Post et svar, så du kan få point og jeg kan lukke spørgsmålet.
Avatar billede jebaje Nybegynder
24. oktober 2007 - 22:48 #5
Jeg opdagede lige at dette spørgsmål stadig er åbent. Jeg vil meget gerne lukke det. Men kan tilsyneladende ikke, da der ikke er givet svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester