Batch If Anweisung mit mehreren Bedingungen ?
Tach'en erst mal ! ! !
Ich möchte eine Variable auf mehrere Werte abfragen und irgendwie dreh ich mich im Kreis
Meine Variable lade ich aus einer externen .bat mit call vars.bat und das klappt auch soweit
Beispiel:
Wenn die Variable schritt den Wert 1 oder 4 oder 7 hat dann mach was
Sollte doch so eigentlich gehen oder ?
Gruß
Malcom
Ich möchte eine Variable auf mehrere Werte abfragen und irgendwie dreh ich mich im Kreis
Meine Variable lade ich aus einer externen .bat mit call vars.bat und das klappt auch soweit
Beispiel:
Wenn die Variable schritt den Wert 1 oder 4 oder 7 hat dann mach was
Sollte doch so eigentlich gehen oder ?
if %schritt%==1 if %schritt%==4 if %schritt%==7 echo MACH WAS
Gruß
Malcom
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 208811
Url: https://administrator.de/contentid/208811
Ausgedruckt am: 16.11.2024 um 13:11 Uhr
9 Kommentare
Neuester Kommentar
Moin malcolmxcia,
Dort wird es jedenfalls erklärt - das wiederum ist nicht gerade meine Stärke.
Ich kann dir bestenfalls nahelegen, die von mir gepostete Zeile mal am CMD-Prompt abzuschicken - vorher noch die Variable %schritt% auf einen Wert zu setzen:
nur die ersten beiden Zeilen sind einzugeben - der Rest ist Ausgabe
und das führende ">" ist mein Prompt und wird nicht eingegeben^^
Hier ist -meiner Meinung nach - auch für einen Laien nachvollziehbar, was diese FOR-Anweisung bewirkt.
Und - wie in meinem ersten Kommentar als eigentliche Antwort geschrieben:
- ein ODER-Äquivalent ist in der Batch-Syntax nicht vorhanden.
- der FOR-workaround ist nur eine verkürzte Variation von bastlas Mehrzeilenlösung ganz oben.
Grüße
Biber
Zitat von @malcomxcia:
Was bedutet jetzt das %%i ? Wird darin das Ergebniss der Abfrage abgelegt oder wie kann ich das verstehen ?
Ich weiss nicht, ob du die Antworten inzwischen aus dem von bastla angegebenen Tutorial bekommen hast.Was bedutet jetzt das %%i ? Wird darin das Ergebniss der Abfrage abgelegt oder wie kann ich das verstehen ?
Dort wird es jedenfalls erklärt - das wiederum ist nicht gerade meine Stärke.
Ich kann dir bestenfalls nahelegen, die von mir gepostete Zeile mal am CMD-Prompt abzuschicken - vorher noch die Variable %schritt% auf einen Wert zu setzen:
nur die ersten beiden Zeilen sind einzugeben - der Rest ist Ausgabe
und das führende ">" ist mein Prompt und wird nicht eingegeben^^
>set schritt=7
>for %i in (1 4 7 11) do if [%i]==[%schritt%] echo machwas mit %i
>if [1] == [7] echo machwas mit 1
>if [4] == [7] echo machwas mit 4
>if [7] == [7] echo machwas mit 7
machwas mit 7
>if [11] == [7] echo machwas mit 11
>
Und - wie in meinem ersten Kommentar als eigentliche Antwort geschrieben:
- ein ODER-Äquivalent ist in der Batch-Syntax nicht vorhanden.
- der FOR-workaround ist nur eine verkürzte Variation von bastlas Mehrzeilenlösung ganz oben.
Grüße
Biber
Hallo Zusammen,
das Thema hat mich auf die Idee gebracht, eine unorthodoxe Möglichkeit in den Raum zu stellen
IF mit logisch verknüpften Bedingungen (OR und AND) in Batch
Grüße
rubberman
das Thema hat mich auf die Idee gebracht, eine unorthodoxe Möglichkeit in den Raum zu stellen
IF mit logisch verknüpften Bedingungen (OR und AND) in Batch
Grüße
rubberman
Hallo an alle!
Ich habe so ungefähr das gleiche Problem: Bei mir wird eine Botschaft nach einer Auswahl (ich simuliere Auswahlmöglichkeiten) immer angezeigt; aber natürlich soll sie nur angezeigt werden, wenn man einen nicht-einprogrammierten Input zurückgibt.
Im Grunde ist es simpel: Input A soll ein Fenster öffnen, alles andere gibt eine Meldung aus. aber ich habe etwas komisches zusammengebastelt, was mich zu Lösung führen sollte, es aber nicht tat...
Ja, alle Marker sind vorhanden und sowohl input= als auch failed= ist definiert!
Das schlaucht mich schon seit ein paar Tagen...
Ich habe so ungefähr das gleiche Problem: Bei mir wird eine Botschaft nach einer Auswahl (ich simuliere Auswahlmöglichkeiten) immer angezeigt; aber natürlich soll sie nur angezeigt werden, wenn man einen nicht-einprogrammierten Input zurückgibt.
Im Grunde ist es simpel: Input A soll ein Fenster öffnen, alles andere gibt eine Meldung aus. aber ich habe etwas komisches zusammengebastelt, was mich zu Lösung führen sollte, es aber nicht tat...
set failed=
if %input%==A explorer "shell:startup"
if NOT %input%==A set "failed=true"
if defined failed goto ChoiceFailed
Das schlaucht mich schon seit ein paar Tagen...
if /i "%input%"=="A" (
explorer "shell:startup"
) else (
goto ChoiceFailed
)