Jump to content

In Variable nach String suchen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...