Grausame Batch-Syntax: if und else

Heute musste ich wieder einmal länger überlegen warum mein Batch-Skript nicht funktionierte. Dies ist der super intuitiven Syntax geschuldet, die ich ab und an wieder vergesse wenn ich länger nichts größeres damit machen musste. Grundsätzlich sind komplexere Sachen in Batch eher „schwierig“ umzusetzen und werden leicht zu Spaghetti-Code. Das ändert aber die meisten Softwarehersteller auch im Jahr 2019 nicht daran einige Teile ihrer Softwarelösung mit Hilfe eines ganzen Haufens von Batch-Skripten zu realisieren, die sich dann auch noch gegenseitigt mit irgendwelchen Parametern aufrufen. Dann braucht man sich als Admin auch nicht schlecht fühlen so etwas zu machen 😀

Zum Glück kann man in Batch-Dateien if- und else-Verzweigungen nutzen. Lediglich die Syntax bzw. die Eigenart in Batch-Dateien, die man penibel einhalten muss, vergesse ich dabei desöfteren.

Grundsätzlich funktioniert es schon mal, wenn man einen solchen Einzeiler nutzt:

Wichtig ist, dass man die Leerzeichen hinter der if-Bedingung wie auch vor und hinter dem else setzt, ansonsten funktioniert es schon nicht! Die Ausführung der Batch-Datei wird dann auch sofort ohen Rückmeldung abgebrochen, selbst wenn in der Datei ein pause-Befehl folgt.

Wenn etwas mehr passieren soll, dann benötigt man natürlich mehrere Zeilen. Dabei muss der Aufbau wie folgt sein:

Das else muss auf jeden Fall hinter der geschlossenen Klammer des if-Zweigs und vor der offenen Klammer des else-Zweigs stehen. Um das ganze nicht zu verwirrend zu gestalten sollte man das else am besten mit den beiden Klammern immer in eine eigene Zeile setzen. Die schließende Klammer des else-zweigs kann man auch hinter den letzten Befehl des else-Zweigs schreiben. Das sieht meistens aber auch eher bescheiden aus.

Schreibe einen Kommentar