[Batch] while Schleife?
Gibt es in Batch eine while Schleife? (der Befehl while existiert jedenfalls nicht, obwohl es doch selbst verschiedenste for-Schleifen gibt)
2 Antworten
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
Ja, gibt for-Schleifen. Gibt zusätzlich noch Sprungmarken, die sind manchmal auch hilfreich.
Sorry, halbe Antwort fehlt. 🙈 Es gibt keine while-Schleife, die kannst du nur mit Sprungmarken simulieren.
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...