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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 146041
Url: https://administrator.de/contentid/146041
Ausgedruckt am: 24.11.2024 um 06:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo Martin,
du schreibst leider nicht genau welche Elemente vorhanden sein müssen.
Versuche es mal hiermit:
Die Zeile 2 kannst du ja zum Testen variieren.
Findstr arbeitet mit rudimentären Regular Expressions:
Gruß
LotPings
Edit: Leider kennt findstr nicht .+ für mindestens 1 Vorkommen des vorherigen Zeichen, das könnte man aber duch ..* simulieren.
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%
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.
Zitat von @bastla:
Obwohl:
wäre vielleicht einen Versuch wert ...
Danke Bastla,Obwohl:
echo.%Var%|findstr /r /c:"\".* [0-9][0-9][0-9][0-9][0-9] .* \* .*\""
>
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] ..* \* ..*\""
Gruß
LotPings