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.