martinstein
Goto Top

Eine Variable mit Wildcards untersuchen

Hallo,

habt Gnade und Nachsicht mit einem Noob. Ich stehe vor folgendem Problem: Ein Programm übergibt meinem Batch eine Variable, in der so ziemlich alles drinstehen kann, ohne viel System dahinter. Ich möchte jetzt, dass das Batch z. B.

echo irgendwas

ausführt, aber nur wenn die Variable folgendermaßen aussieht:

"text 12345 text * text"

Die Anführungszeichen und der Stern sind dabei wirklich vorhanden sind und 12345 für eine beliebige fünfstellige Zahl. Hat jemand einen Lösungsanstatz für mich?

Vielen Dank im Voraus und viele Grüße

Martin

Content-Key: 146041

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

Ausgedruckt am: 28.03.2024 um 22:03 Uhr

Mitglied: 77559
77559 01.07.2010 um 12:50:32 Uhr
Goto Top
Hallo Martin,

du schreibst leider nicht genau welche Elemente vorhanden sein müssen.

Versuche es mal hiermit:
@Echo off
Set Var="text 12345 text * text"  
echo.%Var%|findstr "\".*[0-9][0-9][0-9][0-9][0-9].*\*.*\"" >NUL &&Echo.%Var%  
Die Zeile 2 kannst du ja zum Testen variieren.
Findstr arbeitet mit rudimentären Regular Expressions:
  • das zu testende Anführungszeichen muss mit einem \ escaped werden.
  • Leerzeichen lassen sich leider nicht ohne weiteres prüfen
  • . steht für irgendein Zeichen, der Stern für eine beliebige Anzahl des vorherigen
  • [0-9] steht für eine Ziffer zwischen 0 und 9
  • der literal zu suchende Stern muss auch escaped werden
  • Die bedingte Ausführung && führt das Echo nur aus wenn der Findstr Erfolg hatte.

Gruß
LotPings

Edit: Leider kennt findstr nicht .+ für mindestens 1 Vorkommen des vorherigen Zeichen, das könnte man aber duch ..* simulieren.
Mitglied: bastla
bastla 01.07.2010 um 16:31:04 Uhr
Goto Top
Hallo LotPings!
Leerzeichen lassen sich leider nicht ohne weiteres prüfen
Obwohl:
echo.%Var%|findstr /r /c:"\".* [0-9][0-9][0-9][0-9][0-9] .* \* .*\""
wäre vielleicht einen Versuch wert ...

Grüße
bastla
Mitglied: 77559
77559 01.07.2010 um 17:03:32 Uhr
Goto Top
Zitat von @bastla:
Obwohl:
echo.%Var%|findstr /r /c:"\".* [0-9][0-9][0-9][0-9][0-9] .* \* .*\""
> 
wäre vielleicht einen Versuch wert ...
Danke Bastla,
das scheint zu gehen, die Kombination erschien mir immer nur irgendwie unlogisch, deshalb hab ich es nie probiert.

Damit .* nicht "Nichts" matcht, wäre dann
echo.%Var%|findstr /r /c:"\"..* [0-9][0-9][0-9][0-9][0-9] ..* \* ..*\""
 
optimal, aber da wir vom OP (noch) kein Feedback haben warten wir's mal ab face-wink

Gruß
LotPings
Mitglied: martinstein
martinstein 03.07.2010 um 11:46:07 Uhr
Goto Top
Hallo,

ich hatte ja keine Ahnung, dass das hier so schnell geht face-wink Und BESTENS funktioniert hat es auch.

Vielen Dank und viele Grüße

Martin