lukluk
Goto Top

If-Abfrage mit Wildcard

Aloha ihr lieben,

erstmal vorweg: ich habe google nur ca 5min zu Hilfe genommen, da meine Frage doch rel. dringend ist und ich keine Zeit verlieren möchte. Für viele wird es zwar trivial sein aber ich habe kaum Plan vom Batch-Scripting.. nur halt das, was man so "standardmäßig" weiss.

Ich benötige folgende Anfrage, die ich nun einfach mal in Pseudocode dahinkritzel:

if %USERNAME% == irgendwas_xy OR %USERNAME == irgendwas_abcde goto :yes
else goto :eof
(wobei das _xy und das _abcde 'hardcoded' ist.. also immer das selbe. irgendwas hat variable länge)

Würde sich irgendwer erbarmen und ein paar Minuten seiner Kompetenz opfern und mir womöglich zeitnah helfen? Dem wäre ich sehr sehr darkbar face-smile.

Gruß, luk

Content-Key: 113852

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

Printed on: April 19, 2024 at 16:04 o'clock

Member: Sonnenscheinhasser
Sonnenscheinhasser Apr 14, 2009 at 20:17:55 (UTC)
Goto Top
Du willst also immer nur die Zeichenkette vor dem Underscore abfragen?
Dann suchst du tokens und delims.

Hier sehr anschaulich erklärt: http://www.robvanderwoude.com/ntfortokens.php
Member: lukluk
lukluk Apr 14, 2009 at 20:27:44 (UTC)
Goto Top
Danke für deine Antwort.. aber nein, eher andersherum. Ich will im Prinzip den Usernamen abfragen, ob ein _xy ODER ein _abcde existriert.

Beispiele:
Username = bla -> goto eof
Username = blubb -> goto eof
Username = bla_xy -> goto yes
Username = Blubba_aa -> goto eof
Username = moo_abcde -> goto yes


d.h. Immer wenn der eigene Username ein _xy oder ein _abcde enthält, dann will ich den :yes Part ausführen.. das ganze soll am ende ins Logonscript.

Die Delims scheinen der richtige Weg zu sein aber soweit ich das gerade gesehen habe sind sie für FOR-Schleifen in Bezug auf self-ausgaben der batch-Datei? Wie gesagt.. ich bin nicht allzu gewandt in der Hinsicht... gelobe aber besseurng - sobald die Zeit da ist.
Member: Sonnenscheinhasser
Sonnenscheinhasser Apr 14, 2009 at 20:44:12 (UTC)
Goto Top
Hm, wenn mal ein Underscore vorhanden ist oder nicht, wird es nicht ganz so einfach, denn delim sucht ja nach dem Trennungszeichen, in deinem Fall der Underscore.

Aber es müsste gehen. Dings brauche ich jetzt erst mal eine Mütze Schlaf wegen extrem kurzer Nacht gestern. face-smile

Schwarze Grüße,
Tom
Member: lukluk
lukluk Apr 14, 2009 at 20:47:11 (UTC)
Goto Top
naja in php würd das ja zB problemlos gehen indem man ein sagt:
var = explode an der stelle "_"
if var[1] existiert dann ...
else eof

so etwas muss es doch auch in batch geben? zB der Fall, dass ein angegebener delim nicht existiert in der variable?

Trotzdem Danke für deine Hilfe und eine gute Nacht.
Member: bastla
bastla Apr 14, 2009 at 20:56:58 (UTC)
Goto Top
Hallo lukluk!

Sollte sich so lösen lassen:
echo %username%|findstr /e "_xy">nul && goto :yes  
echo %username%|findstr /e "_abcde">nul && goto :yes  
goto :eof
:yes
Grüße
bastla

[Edit] Aufgrund der geposteten Beispiele korrigiert [/Edit]
Member: lukluk
lukluk Apr 14, 2009 at 21:03:15 (UTC)
Goto Top
Hallo Bastler

das ganze stellt ein Logon-Script dar. Die User haben halt verschiedene Logins, je nachdem was für ein Account das ist. Bestehend aus Nachname_zusatz. Wobei der Zusatz ENTWEDER "xy" ODER "abcde" ist. Nur diese beiden sind möglich.

Beispiele wären nun:

Meier
Mueller
Bauer_xy
Franz
Mustermann
Musterfrau_abcde
Schroeder
Schulz
Schneider_xy


In diesem Fall würde ich für Bauer, Musterfrau und Schneider halt etwas ausführen.
Member: bastla
bastla Apr 14, 2009 at 21:07:02 (UTC)
Goto Top
Hallo lukluk!

Die nochmals korrigierte Version oben sollte jetzt eigentlich passen ...

... obwohl es so eleganter wäre:
echo %username%|findstr "_xy\> _abcde\>">nul || goto :eof  
:yes
Grüße
bastla
Member: lukluk
lukluk Apr 14, 2009 at 21:18:11 (UTC)
Goto Top
Na dann sag' ich mal vielen lieben Dank! Werde es gleich mal testen.

Gruß, luk

Edit: Es funkt wunderbar.. nochmals besten Dank!