Blade1981 10 Geschrieben 26. November 2008 Melden Teilen Geschrieben 26. November 2008 Hallo zusammen, ich weiß zwar, dass man mit "findstr" in einer Datei nach einem String suchen kann, aber gibt es auch eine Möglichkeit, in einer Variablen nach einem String zu suchen? Wir arbeiten mit Benutzernamen und einer Zahlerweiterung: normaler Benutzer: Benutzer01 Erweiterter Benutzer: Benutzer-a01 Sie sollen Beide das gleiche Script ausführen, aber in diesem Script soll abgefragt werden, um welchen Benutzer es sich handelt. Sprich, wenn -a an viert-letzter Stelle vorkommt, dann ist das ein Erweiterter Benutzer und der soll in dem Anmeldescript diese Zeile umgehen. Also so: wenn an viertletzter Stelle von %USERNAME% "-a" dann nicht ausführen regkey.reg Es würde auch schon sehr helfen, nur nach "-a" in der Variablen suchen zu lassen, aber mit Stellenabfrage wäre natürlich besser! Danke für eure Hilfe! P.S.: Der Benutzername istnatürlich nicht immer gleich, sonst wäre das ja so gegangen: set varUser=%USERNAME:~7,2% – Ich habe es nun so lösen können: Rem Abfrage ob Erweiterter oder Normaluser Rem von hinten 4 Zeichen zurueck zaehlen und in die Variable varUser ablegen set varUser=%USERNAME:~-4% Rem in der Variable varUser die ersten beiden Zeichen auslesen und als Variable merken set varUser=%varUser:~0,2% Rem wenn die Variable NICHT mit "-a" (Groß u Kleinschreibung ignorieren /I) gefuellt ist, ist es kein Erweiterter-User -> Befehl ausfuehren! if /I NOT %varUser%==-A befehl.cmd Zitieren Link zu diesem Kommentar
Biber 10 Geschrieben 26. November 2008 Melden Teilen Geschrieben 26. November 2008 Moin Blade, eine etwas kürzere Variante wäre (Beispiel zum Test am CMD-Prompt): echo %username%|find /i "a-1">nul && @echo Ist ein A-1-User-bzw-echo %username%|find /i "a-1">nul || @echo Issn DAU[/Code] In Deinem batch entsprechend [Code]....echo %username%|find /i "a-1">nul && goto :weiterBeiA1Usern...[/Code] Grüße Biber Zitieren Link zu diesem Kommentar
Blade1981 10 Geschrieben 26. November 2008 Autor Melden Teilen Geschrieben 26. November 2008 @Biber Also bei mir funktioniert das nicht. Kannst du mir die Befehlszeile genauer erklären? bezüglich | und find /i und auch >nul sowie das && bzw. die || Vielen Dank bereits! Zitieren Link zu diesem Kommentar
Biber 10 Geschrieben 26. November 2008 Melden Teilen Geschrieben 26. November 2008 Moin Blade, sorry, ich hatte vorhin zu flüchtig auf das Originalbeispiel geschaut und in meinem Beispiel nicht den Suchstring "-A", sondern den String "A-1" verwendet. Irgendeine Freud'sche Fehlleistung, nehme ich an. Anyhow, hier nochmal das Ganze in epischer Breite und schrittweise am CMD-Prompt hergeleitet. Die Zeilen, die mit ">" beginnen, sind die Eingaben. Das ">" NICHT mit eingeben. >set testusername=Benutzer-a01>echo Benutzer: [%testusername%]Benutzer: [benutzer-a01]>echo %testusername%|find /i "-a"Benutzer-a01>echo %errorlevel%0>echo %testusername%|find /i "-x">echo %errorlevel%1[/Code] Ich definiere oben mit dem SET-Befehl eine Umgebungsvariable %testusername%. Als Erstes lasse ich die anzeigen mit Echo. Okay, keine Kunst. Danach übergeb ich die echo-Ausgabe mit dem Pipe-Symbol "|" an den Find-Befehl. Die Sequenz "befehl1 | befehl2" heißt nichts anderes als "Übergib die Ausgabe von befehl1 als Input für befehl2". In meinem Fall wird oben also der Text "Benutzer-a01" quasi als Input-File an den Find-Befehl übergeben mit der Aufforderung "Schau ma', ob in diesem Text ein "-a" vorkommt. Ach ja, gross/kleingeschreibung /i = ignorieren. Okay, wenn der Suchstring gefunden wird, dann setzt der Find-Befehl das Errorlevel 0 - bedeutet "Alles prima, Erfolg gehabt, gefunden, TRUE" Wird der Suchstring nicht gefunden wird, dann setzt der Find-Befehl das Errorlevel 1 - bedeutet "Fehler, Pech gehabt, nicht gefunden, FALSE". Die Befehlsverkettung " (befehl1) && (befehl2)" bedeutet: führe erst befehl1 aus, wenn der klappt/TRUE liefert/errorlevel 0 setzt, NUR DANN führe befehl2 aus Die Befehlsverkettung " (befehl1) || (befehl2)" bedeutet: führe erst befehl1 aus, wenn der Fehler wirft/FALSE liefert/errorlevel > 0 setzt, NUR DANN führe befehl2 aus Grüße Biber Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.