Avatar billede bat1234 Juniormester
14. august 2008 - 14:11 Der er 8 kommentarer og
2 løsninger

batch-script

Hej,

jeg skal lave et logon-script der enten kun kører for en enkelt bruger. Eller, alle andre brugere end en bestemt bruger. Hvordan gør jeg det? Jeg havde tænkt på noget i denne retning:

If "%username%"="USERX" goto NO_TEST
....
NO_TEST

Er ligmed-tegnet rigtigt at bruge her?
Hvad hedder "forskelligt fra-tegnet" i batch-scripting?
Skal man bruge == i stedet for?
Hvordan laver man det for flere brugere?

Alle input er velkomne.

Vh,
Bat.
Avatar billede w13 Novice
14. august 2008 - 14:18 #1
<> vil vel fungere som "forskellig fra".
Avatar billede pidgeot Nybegynder
14. august 2008 - 14:21 #2
Du har to muligheder

IF NOT "%USERNAME%"=="USERX" goto NO_TEST

eller, når cmd.exe er fortolker i stedet for command.com (du skal vist tilbage til Windows 98 eller ME før det ikke er tilfældet):

IF "%USERNAME%" NEQ "USERX" goto NO_TEST

Du kan læse det hele hvis du står i en kommandoprompt og skriver "if /?".
Avatar billede arne_v Ekspert
15. august 2008 - 01:36 #3
Har du overvejet at skifte fra BAT til VBS ?

Eksempler på brugernavns test:

Set shell = CreateObject("WScript.Shell")
If shell.Environment("PROCESS").Item("USERNAME") = "Arne" Then
    WScript.Echo "Du er Arne"
Else
    WScript.Echo "Du er ikke Arne"
End If

Set net = CreateObject("WScript.Network")
If net.UserName = "Arne" Then
    WScript.Echo "Du er stadig Arne"
Else
    WScript.Echo "Du er stadig ikke Arne"
End If
Avatar billede arne_v Ekspert
28. oktober 2008 - 02:36 #4
bat1234 ?
Avatar billede bat1234 Juniormester
30. oktober 2008 - 17:35 #5
pidgeot: Jeg fik det til at virke med en /i tilføjet:
IF /i "%USERNAME%" NEQ "USERX" goto NO_TEST. Tak.

Jeg fandt dog en bedre løsning:
Lave en batch-fil for hver user, og så tilføje hvad der skal eksekveres for hver enkelt user.

Arne v: At konvertere til vbs ville være for svært og besværligt da det er et stort script. Men tak for tippet.

Begge: Læg et svar hvis i vil have point. :-)
Avatar billede arne_v Ekspert
30. oktober 2008 - 17:56 #6
svar
Avatar billede pidgeot Nybegynder
30. oktober 2008 - 18:07 #7
Værsgo (omend jeg ikke er helt med på hvad en /i skulle gøre - kan ikke se det under if /?)
Avatar billede arne_v Ekspert
30. oktober 2008 - 18:26 #8
and the /I switch, if specified, says to do case insensitive string
compares.  The /I switch can also be used on the string1==string2 form
of IF.  These comparisons are generic, in that if both string1 and
string2 are both comprised of all numeric digits, then the strings are
converted to numbers and a numeric comparison is performed.
Avatar billede arne_v Ekspert
30. oktober 2008 - 18:26 #9
output fra help if hvis man bladrer langt nok ned
Avatar billede pidgeot Nybegynder
30. oktober 2008 - 18:47 #10
Den sætning havde jeg fuldstændig overset - tak, Arne :)
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