1.7k Aufrufe
Gefragt in Anwendungen(Java,C++...) von it304 Einsteiger_in (81 Punkte)
Hallo Gemeinde,

vlt. habt ihr ja ein Tipp...

Ich möchte gerne das eine Batchdatei ausführt wird, wenn der User in einer bestimmten Gruppe ist.

Eigentlich sollte er prüfen.

wenn angemeldete UserID = XXX1 in Gruppe V-XX-1234 dann gehe zu ENDE
wenn nicht gehe zu Fehler

oder anders...

in einer txt-Datei stehen mehrere UserIDs, wenn der angemeldete User mit seiner UserID drin steht soll er zu X gehen wenn nicht zu Y

Kann man sowas Problemlos in einer Batch-Datei umsetzen und wenn ja wie?

LG
IT304

8 Antworten

0 Punkte
Beantwortet von
den angemeldeten user kannst du im batch aus der umgebung auslesen %USERNAME%

und dann mit deiner txt vergleichen lassen
0 Punkte
Beantwortet von it304 Einsteiger_in (81 Punkte)
Hi,

da brauch ich nochmal die Hilfe,

Mit welchen Befehl kann ich in einer Batch prüfen, ob die UserID in der Txt vorhanden ist ?

LG
IT304
0 Punkte
Beantwortet von Mitglied (449 Punkte)
hallo

zumindest unter winXP gibts den Befehl "FIND" noch.
[b]FIND [/b]gibt einen ERRORLEVEL-Wert zurück den du mit [b]IF[/b] auswerten knnst
[/i]

IM Beispiel wird jetzt der Text "Anton" in der NAMELIST.TXT gesucht

FIND [b]"Anton[/b]t" NAMELIST.TXT                   
IF ERRORLEVEL 1 goto VERMISST             
IF ERRORLEVEL 0 goto GEFUNDEN             

[b]:VERMISST[/b]
[i]Anweisungen für eine Nicht gefundene USER-ID[/i]
GOTO ProgEnde

[b]:GEFUNDEN[/b]
[i]Anweisungen für eine Nicht gefundene USER-ID[/i]
GOTO ProgEnde

:ProgEnde

[b]Anmerkungen[/b]
[i]Errorlevelwerte immer mit dem größtem Wert zuerst abfragen

IF ERRORLEVEL 1 goto VERMISST             
IF ERRORLEVEL 0 goto GEFUNDEN             

Schreibweise bei den GOTO-Anweisungen genau beachten
ein GOTO  braucht immer eine entsprechende Sprungmarke,
die mit : Doppelpunkt eingeleitet wird
Umlaute bei Sprungmarken  nicht verwenden[/i]


gruß Buzz
0 Punkte
Beantwortet von Mitglied (449 Punkte)
Fortsetzung:

starte deine Batchgefolgt von einem LEERzeichen und dem dem Parameter %username%

BATCH %username%

die FIND-Anweisung wie folgt zu ersetzen

FIND "%1" UserList.txt
IF ERRORLEVEL 1 goto VERMISST
IF ERRORLEVEL 0 goto GEFUNDEN


restliche Auswertung wie oben

TIP:
wenn du

FIND "%1" UserList.txt >silent

eingibst
laufen ALLE Bildschirmausgaben dieses Befehls auf die Hilfsdatei silent,
welche du am Ende der BATCH einfach löscht
0 Punkte
Beantwortet von Mitglied (449 Punkte)
war gestern anscheinend zu lange wach, da hat
sich der Fehlerteufenl eingeschlichen... ;)

bei der Auswertung heißt es in der Rubrick Gefunden natürlich


:GEFUNDEN
Anweisungen für eine gefundene USER-ID
GOTO ProgEnde


sorry




gruß buzz
0 Punkte
Beantwortet von it304 Einsteiger_in (81 Punkte)
Vielen Dank Bussard, das hat mir sehr geholfen..konnte damit mein anliegen umsetzen...

FIND /i "%username%" C:\Windows\XXX\userids.txt
IF ERRORLEVEL 1 goto FQ1
IF ERRORLEVEL 0 goto ENDE

Der FIND Befehl funktioniert auch unter Windows7, gott sei dank

und /i achtet er nicht auf groß und kleinschreibung...für leute die sowas vlt. auch mal brauchen :)
0 Punkte
Beantwortet von Mitglied (449 Punkte)
hallo IT304

ich kenn die BATCHes noch von der DOS Ära, und daran orientiere ich mich nach wie vor ;)

die /I Anweisung bei FIND ist mir persönlich nicht bekannt (gewesen), man lernt nie aus.

toi toi toi weiterhin

buzz
0 Punkte
Beantwortet von massaraksch Experte (3.1k Punkte)
TIP:
wenn du

FIND "%1" UserList.txt >silent

eingibst
laufen ALLE Bildschirmausgaben dieses Befehls auf die Hilfsdatei silent,
welche du am Ende der BATCH einfach löscht

Nicht korrekt. Fehlermeldungen werden trotzdem angezeigt.

Besser und einfacher (man erzeugt keine Datei, die man wieder entfernen müßte) geht es so:
FIND "%1" UserList.txt 2>nul>nul
Umleitung aller Befehlsausgaben ins Nirvana.

mfg, Massaraksch
...