hatzwatz
Goto Top

Batch: Zeichen in Variable suchen

Hallo,

ich möchte gerne in einer Variablen (einfache Windows Batch-Datei) schauen, ob ein bestimmtes Zeichen gibt.

Also zum Beispiel nehmen wir die Variabel "test"

set test=c,d,e

Nun möchte ich abfragen, ob z.B. "c" in der Variablen "test" vorkommt. Je nach Ergebnis (errorlevel) möchte ich dann bestimmte Aktionen ausführen.

Leider habe ich noch keine Möglichkeit gefunden. Vielleicht kann mir ja jemand helfen face-smile

MfG

hatzwatz

Content-ID: 47407

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

Ausgedruckt am: 26.11.2024 um 11:11 Uhr

miniversum
miniversum 25.12.2006 um 19:42:32 Uhr
Goto Top
Du meinst so?

@echo off
set test=c,d,e
set errorlevel=0

for %%i in (%test%) do if [%%i]==[c] set errorlevel=1

echo %errorlevel%


miniversum
hatzwatz
hatzwatz 25.12.2006 um 22:23:10 Uhr
Goto Top
jep, klappt - genauso meinte ich das face-smile - danke

mit for-Schleifen habe ich mich noch nicht wirklich beschäftigt. Sollte ich mal tun.

Wofür brauche ich die Eckigen Klammern?

Gruß

hatzwatz
miniversum
miniversum 26.12.2006 um 09:53:15 Uhr
Goto Top
Die brauchst du nur das es besser aussieht.
Wenn z.B. nichts zwischen den kommas stehen würde würde er dann mit [c] vergleichen.
Du kannst auch die Klammern durch " ersetzen.

miniversum

PS: Teste mal bitte obs immer so geht. Diese Lösung geht halt imemr nur wenn die Variable die Form mit kommas zwischen den Zeichen hat.
hatzwatz
hatzwatz 26.12.2006 um 10:13:15 Uhr
Goto Top
in der Variable müssen die Werte durch Leerzeichen oder Komma getrennt werden. In jedem Fall stehen nachher in der Variablen die Werte durch Leerzeichen getrennt, desshalb erkennt die FOR Schleife die auch als einzelne Werte. Es ist glaube ich sogar egal, welches Zeichen man dazwischen schreibt.

Wenn ich mehrere Befehle in der ForSchleife ausführen möchte, kann ich die ja in Klammern setzen. Wenn ich innerhalb dieser Schleife dann eine Ausgabe machen möchte, hat er anscheinende die Variablen noch nciht zugeordnet!? Kann das sein?

Wenn ich also in der Schleife echo %errorlevel% ausgebe, dann erhalte ich 0 und wenn ich das nach der Schleife mache, dann erhalte ich 1 (weil der Wert gefunden wurde).

Gruß

hatzwatz
miniversum
miniversum 26.12.2006 um 10:57:08 Uhr
Goto Top
Ja die Zuordnung geshcieht erst nach der Forschleife. Wilst du das direkt in der Forshcleife machen geshcieht das wenn du vorher setlocal enableDelayedExpansion machst. Dann kans tdu die Variabeln gleich mit !errorlevel! abrufen.

Wenn du mehrere Befehle drin haben willst kans tdu die in klamemrn schreiben und untereinadner oder eben mit & verbunden.

Ja das meinte ich. Ist dne sichergestellt das die zu überprüfenden zeichen imemrmit Komma oder Leerstelle getrennt sind?

miniversum
hatzwatz
hatzwatz 26.12.2006 um 11:32:57 Uhr
Goto Top
jep, ist sichergestellt.

Danke Dir für die Hilfe. Hat jetzt alles so geklappt wie ich mir das vorgestellt habe face-smile

Viele Grüße und guten Rutsch

hatzwatz