Toon posts:

[.cmd]tekstfile uitlezen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hai

Ik ben een loginscript aan het klussen voor het domein, ik ga geen kixstart gebruiken, en ik wil grag dat ik per gebruiker de afdeling kan opgeven zodat ik een afdelingsscript kan runnen.

Nou had ik gedacht om een tekst bestandje te misbruiken, waar ik elke regel er als volgt uit laat zien:
code:
1
username;afdeling


Weet iemand hoe ik een (windows 98/XP) batchfile uitgelegd krijg dat hij het bestand moet openen en moet zoeken naar de username (%USER%, bestaat) en daar dan vervolgens %afdeling% bij moet SETten?

ik gebruik PutInEnv om de diverse variabelen te zetten en username is dus een bekend gegegeven.

  • mutsje
  • Registratie: September 2000
  • Laatst online: 07-09 15:10

mutsje

Certified Prutser

Heb je al gezocht op GOT?

  • pistole
  • Registratie: Juli 2000
  • Laatst online: 08-09 20:30

pistole

Frutter

type? find? grep? sed?
Laatst genoemde zijn oorspronkelijk *nix tools, maar ook beschikbaar voor win32

Ik frut, dus ik epibreer


Verwijderd

zitten de users niet in een groep die overeenkomt met een afdeling

Verwijderd

Topicstarter
muts, wat draag je nou per saldo bij?

pistole, ik kan wel TYPE gebruiken maar hoe krijg ik die .bat uitgelegd dat ie daar de output van moet gebruiken om te controleren welke usergroup de gebruiker in hoort? als het op het scherm staat ben ik nog nergens namelijk.

nee, de users zitten niet in een afdelingsgroep. en die kun je met putinenv sowieso niet in het environment plaatsen dus echt veel zou het me ook niet helpen.

  • mutsje
  • Registratie: September 2000
  • Laatst online: 07-09 15:10

mutsje

Certified Prutser

Probeer het Filter commando eens (resourcekit) en dan wat je gefilterd hebt omzetten naar een variabele en dan set %bla%

Verwijderd

een test of iemand in een groep zat is makkelijker dan via een tekstfile...

maar zoiets

find /i "%user%" path:\file.txt >tempfile.txt
for /f "delims=. tokens=2" %a in (tempfile.txt) do set afdeling=%a (%%a in batchfile gebruiken)

edit: een beetje omslachtig natuurlijk (ik was nog niet wakker :))

for /f "delims=. tokens=2" %a in ('find /i "%user%" path:\file.txt') do set afdeling=%a

[ Voor 30% gewijzigd door Verwijderd op 18-03-2003 11:10 ]


Verwijderd

Topicstarter
I love you!
ik ga er mee aan de slag zodra ik klaar ben met het restoren van de backup op de bedrijfskritische server. |:(
een eerdere knutsel-poging gaat me vermoedleijk m'n job kosten ;)

Verwijderd

Topicstarter
moest %a niet zijn %%a ?

Dan komt ie al veel verder in de regel voor hij vastloopt.

hier is de huidige output, met de wijziging dat ik een juist pad heb opgegeven voor het bestandje (\\server\NTLOGON\SCRIPT\afdeling.lst )
en %a heb vervangen door %a%

weet iemand wat er fout gaat?

IN:
code:
1
2
3
for /f "delims=. tokens=2" %%a in ('find /i "%user%" \\server\NETLOGON\SCRIPT\afdeling.lst')
 do set afdeling=%%a
echo Username = %user% Afdeling = %afdeling%


UIT:
code:
1
2
3
4
5
6
C:\logon>for /f "delims=. tokens=2" %a in ('find /i "SuperKnetter" \\server\NETLOGON\SCRIPT\afdeling.lst')
 do set afdeling=%a
Syntax error

C:\logon>echo Username = SuperKnetter Afdeling =
Username = SuperKnetter Afdeling =


De lange lijn van ii5_rulz is getrimd omdat de layout van GoT anders breedbeeld wordt.

[ Voor 7% gewijzigd door Verwijderd op 19-03-2003 16:49 ]


  • Bartjo
  • Registratie: April 2002
  • Laatst online: 08-09 14:59
En wie gaat die lijst met usernames en afdelingen bijhouden ... ?
Zoals iis5_rulez al zei: bestaat er geen indeling naar afdeling via de groepen structuur?
Tooltje om te testen of iemand lid is van een bepaalde groep zit ook in de ResKit.
edit:
Compubiter: Smileys mogen wel wat minder, zie ook FAQ Forumgedrag - Reageren ;)

[ Voor 21% gewijzigd door Compubiter op 19-03-2003 16:38 ]


Verwijderd

Topicstarter
ik haal dit maar weg voor er ruzie van komt...
maar kort gezegd, je helpt niet en je vraag was al beantwoord.

[ Voor 86% gewijzigd door Verwijderd op 19-03-2003 16:35 ]


  • Bartjo
  • Registratie: April 2002
  • Laatst online: 08-09 14:59
Verwijderd schreef op 19 March 2003 @ 16:25:
ik haal dit maar weg voor er ruzie van komt...
maar kort gezegd, je helpt niet en je vraag was al beantwoord.
Je hebt gelijk: mijn vraag was al beantwoord. Excuus daarvoor.

Wil ik even toelichten waarom ik toch nog op het groepen-idee terugkom (in mijn wel-als-hulp-bedoelde post):
Het is wellicht makkelijker om die groepen structuur te administreren (en hij kan in meerdere gevallen van pas komen) dan een user-afdeling lijst op een logon-share. En dat zou dan een reden kunnen zijn om de groepen structuur op te zetten als hij nog niet bestaat.
En om aan te geven dat er goed met groepen gewerkt kan worden in batch files, noemde ik de resource kit.

Even goeie vrienden als je dit niet ziet zitten. Is maar een advies. :)

Verwijderd

Topicstarter
ik zie het wel zitten maar ik heb gewoon geen tijd om dat te implementeren de eerst komende drie, vier maanden.
je moet je het als volgt voorstellen:

na 5 jaar wildgroei en totale chaos ben ik er voor gezet. ik heb een jaartaak an het structureren, en ik kan maar één ding tegelijk. gebrek aan documentatie betekent dat als ik voor iedereen een userfolder maak en een department folder en ik geef de rechten netjes uit dat ik dan ineens aangeschoten wordt want iemand sloeg zijn belangerijke data altijd op in \\server\c$\recycled\mijn documenten\ omdat daar tenminste niemand in ging zitten rotzooien.

tot de systeembeheerder de anderhalve gigabyte grote recyclebin leegt...

in zo'n situatie is resultaat wat de eigenaar van het bedrijf direct in beeld krijgt veel belangerijker dan een werkbare situatie. ik kan even niet doen wat ik wil, en moet dus met NT4 (sowieso windows != server volgens mij) en chaos werken omdat anders mensen stil komen te liggen en dat is slecht voor mijn werkgelegenheid.

dáárom vroeg ik expliciet niet om groepen uitlezen maar om afdelingen.
als ik die files nou uit kan pluizen kan ik een werkbaar netwerk op poten zetten en heb ik wél tijd om idd afdelingen in groepen te gaan wkakken en het aantal groepen per persoon onder de 20 te krijgen (5 jaar wildgroei = puin)

Verwijderd

ik ben ook een voorstander om een groep per afdeling(global) te maken... je hoeft die groep verder geen rechten te geven. als je bijv een gebruiker kopieert werkt het gelijk zonder ook nog eens een txtfiletje aan te moeten passen... maar ja als je om werk verlegen zit...

het gaat overigens mis op je punt in je txt file. (somehow gaat je find dan mis...) maak hier ; van en pas je delim aan...

test.txt:
test;groep

code:
1
2
3
4
H:\>for /f "delims=; tokens=2" %a in ('find /i "test" test.txt') do echo %a

H:\>echo groep
groep

[ Voor 23% gewijzigd door Verwijderd op 19-03-2003 17:33 ]


Verwijderd

Topicstarter
Hij loopt nog steeds dood op een syntax error ondanks de wijzigingen.

als ik doe for /? kent het hele ding geen /f
had ik gemeld dat ik win98 werkstations heb i.v.m. commandline functionaliteit?

hmm
dat wordt dus toch eerst groepen e.d. regelen.
MAAR ik kan nu wel m'n vrolijke batchfile perikelen voortzetten op m'n XP pc

[ Voor 26% gewijzigd door Verwijderd op 20-03-2003 10:39 ]


Verwijderd

hehe dat zou kunnen... het werkt alleen op nt systems. (getest op xp)

Verwijderd

Topicstarter
ja, ik ging net VNCen naar m'n baas z'n pc (die heeft wél XP) en daar for /? doen in cmd en daar kreeg je ineens wél nuttige mogelijkheden met for :)
en een telefoontje, dat ie gehackt werd en of ik wilde komen kijken ;)

enieweej heb ik al een paar leuke hobby dingen gezine voor met for te werken onder XP dus nutteloos is het topic toch niet geweest.

  • [ash]
  • Registratie: Februari 2002
  • Laatst online: 23-08 12:03

[ash]

Cookies :9

Misschien ten overvloede:

Als je een for lusje gebruikt, dien je de in de for lus gebruikte variabelen te schrijven met dubbele procentjes, dus %%a ipv %a.

Grote kans dat die for lus, die find statement accepteerd, doe het zoals iis5_rulez al eerder aangaf, eerst de output van find pipe-en naar een textbestand (bijv. %TEMP%\temp.txt) en pas daarna te doorlopen met een for lus. (vergeet daarna niet het bestand te verwijderen)

misschien %username% ipv %user% ? (of gaat dit wel goed)

edit:

als ik wat meer tijd heb aan het eind van de dag, zal ik wel wat in elkaar flansen (tenzij het al werkt)

[ Voor 12% gewijzigd door [ash] op 20-03-2003 12:18 ]


Verwijderd

zoals ik ook al eerder zei. %%A alleen in batch gebruiken... vanaf commandline dus wel %a :)

Verwijderd

Topicstarter
die had ik al gevonden :)
als ik er niet uitkom search ik nog wel ff voor ik terug kom en ga jammeren ;)
thanks anyway, maar we kwamen er dus net achter dat het op win98 niet mogleijk is met foor de door ons gewenste actie uit te spoken.

tenzij jij een andere aanpak bedenkt die om de berperkingen van FOr op een windows 98 pc heenkomt...

Verwijderd

geen idee... ik gebruik geen huis tuin en keuken troep :)

edit: typo :)

[ Voor 109% gewijzigd door Verwijderd op 20-03-2003 17:28 ]

Pagina: 1