[Batch] while Schleife?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Direkt gibt es, wie du richtig erkannt hast, keine while-Schleife.

Meistens nutzt man hierfür dann die Sprungmarken:

:WHILE
if not <die Bedingung, die normal in while(...) kommen würde> goto WHILE_end
    ::dein Code
goto WHILE
:WHILE_end

bzw.

:DO_WHILE
    ::dein Code
if <gleiche Bedingung wie Bsp1> goto DO_WHILE

Die Syntax ist natürlich länger und umständlicher als gewöhnlich und man muss aufpassen keine Sprungmarke doppelt zu verwenden.

Alternativ kannst du auch die for-Schleifen missbrauchen:

while(true)

for /L %%i in (0,0,1) do echo spam

while(x<5)

@echo off & setlocal EnableDelayedExpansion
for /L %%i in (0,0,1) do (
    set x=%random:~0,1% 
    echo %x%
    if %x% geq 5 goto break
)
:break
pause

aber da würde ich dann die Sprungmarken bevorzugen, da muss man nicht mit delayedExpansions arbeiten.

~Tim

Woher ich das weiß:Hobby

Ja, gibt for-Schleifen. Gibt zusätzlich noch Sprungmarken, die sind manchmal auch hilfreich.

timlg07  25.07.2018, 22:15

Bei der Frage nach while Schleifen mit dem Kommentar, es gäbe ja auch for-Schleifen, ist die Antwort "es gibt for-Schleifen" nicht gerade sinnvoll...

0
jrti61tc  25.07.2018, 22:18

Sorry, halbe Antwort fehlt. 🙈 Es gibt keine while-Schleife, die kannst du nur mit Sprungmarken simulieren.

2