17 Nov
Aus irgendeinem Grund habe ich lange Zeit nicht gewusst, dass es If Else in Batch gibt…
Ich hatte bereits ein Tutorial zum Kombinieren mehrerer Befehle in einer Zeile geschrieben. Damit kann ich so etwas wie If Else vortäuschen:
if not 0==1 echo dies & echo das & del jenes.txt & goto korrekt echo foo & echo bar & del bullshit.txt & goto falsch
Dabei gibt es echtes If… Else… in Batch!
Parameter abfangen könnte also so aussehen:
if /i %action%==triggered-restart ( if exist %restartdir% call :kill-server & rd %restartdir% /s /q goto end ) if /i %action%==start-server ( tasklist |find /i "IQB_Server.exe" if not %errorlevel%==0 start IQB_Server.exe goto end ) if /i %action%==check-status ( tasklist |find /i "IQB_Server.exe" if %errorlevel%==1 ( echo Serverprozess nicht gefunden. ) else ( echo Serverprozess gefunden ) pause goto end ) if /i %action%==force-restart ( call :kill-server goto end ) if /i %action%==daily-restart ( call :kill-server goto end ) if /i %action%==? ( call :help ) else ( if /i %action%==help ( call :help ) else ( if /i %action%==hilfe ( call :help ) else ( if /i %action%==usage ( call :help ))))
Man achte auf die Möglichkeit der tiefen Verschachtelung von If Else. Es wird zwar schnell unübersichtlich mit den Klammern aber es funktioniert, wenn man sie richtig setzt.
Wichtig: Nach dem Statement des If und nach dem Else unbedingt ein Leerzeichen lassen, sonst gibts Fehler. Fehlerhaft wäre also:
REM Fehlerhaftes Beispiel if %test%==1( echo foo ) else( echo bar )
Ein funktionierender Einzeiler:
if %test%==1 (echo foo)else (echo bar)
Es ist übrigens genauso auch ein If Not [Statement] ( ) möglich.
Hat dir dieser Post gefallen? Dann schau noch unter den "Ähnlichen Artikeln" nach und abonniere meinen RSS Feed.Momentan sind noch keine Einstellungen möglich.
Es wird bald möglich sein, auf Wunsch html7bar komplett zu deaktivieren.