If … Else… Else If… in Batch – mit Verschachtelung

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:

Dabei gibt es echtes If… Else… in Batch!
Parameter abfangen könnte also so aussehen:

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.

Zufälliger Artikel:  Aktive PC-Sessions mit PsLoggedOn im Windows Netzwerk anzeigen

Wichtig: Nach dem Statement des If und nach dem Else unbedingt ein Leerzeichen lassen, sonst gibts Fehler. Fehlerhaft wäre also:

Ein funktionierender Einzeiler:

Es ist übrigens genauso auch ein If Not [Statement] ( ) möglich.

2 Kommentare

  1. Habe heute auch ein wenig experimentiert. Mein Progrämmchen merkt sich bis zu drei beim Programmstart mitgegebene Parameter (C:\Dokumente und Einstellungen\Chef>param.bat blah blahblah blahblahblah) und gibt diesbezüglich eine Zusammenfassung aus:

    @echo off

    echo Parameter1: „%1“
    echo Parameter2: „%2“
    echo Parameter3: „%3“

    if „%1″==““ (
    echo Parameter 1 ist leer
    ) else (
    echo dem Programm wurde „%1“ als Parameter 1 mitgegeben.
    )

    if „%2″==““ (
    echo Parameter 2 ist leer
    ) else (
    echo dem Programm wurde „%2“ als Parameter 2 mitgegeben.
    )

    if „%3″==““ (
    echo Parameter 3 ist leer
    ) else (
    echo dem Programm wurde „%3“ als Parameter 3 mitgegeben.
    )

    if „%2%3″==““ echo Parameter 2 oder 3 sind leer.
    if not „%2%3″==““ echo Parameter 2 oder 3 sind nicht leer.

    pause

  2. Wichtig ist auch, dass nach der abschließenden Klammer des if und vor dem else kein Zeilenumbruch stehen darf!

    if %1% == test (
    echo Hallo
    )
    else (
    echo Tschuess
    )

    wird also nicht funktionieren. Es kommt die Fehlermeldung, dass „else“ nicht bekannt sei.

    if %1% == test (
    echo Hallo
    ) else (
    echo Tschuess
    )

    funktioniert hingegen wie gewünscht.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.