Struktur in einer Batchdatei



  • Das schaut auf den ersten Blick vielleicht ein bißchen konfus aus, aber ich hab mich wieder einmal den halben Nachmittag mit dem Windows 2000 - Kommandozeileninterpreter herumgeschlagen und mit altbekannten Problemen gerungen: mehr als vier "gotos" zu verwenden lässt im Kopf eines halbwegs gebildeten Programmierers Suizidgedanken aufkeimen und die Alternative (for) lässt einen periodisch wiederkehrend alle fünfeinhalb Minuten daran denken, eine bash zu installieren.

    Dann ist mir da die verhängisvolle Idee gekommen: Man könnte doch zum Beispiel folgendes formulieren:

    @echo off
    setlocal
    
    set var=0
    goto testexpr
    :wstart
        echo %var%
        set /a var=%var%+1
    :testexpr
    if %var% lss 3 goto wstart
    

    Das würde ein Verhalten simulieren, das gemeinhin von einer while-Schleifenkontruktion erwartet wird, aber um Größenordnungen schwerer zu durchschauen wäre. Wenn man jetzt die Variablensubstitution geschickt einsetzt, ist es vielleicht möglich, prinzipiell etwas wie das Folgende zu schreiben:

    @echo off
    setlocal
    
    set var=0
    %while% %var% lss 3
        echo %var%
        set /a var=%var%+1
    %endwhile%
    

    Das wäre schon wesentlich angenehmer. Zwei Variablen, um die Schleife zu begrenzen, irgendwo ein Ausdruck, der von "if" ausgewertet wird (%var% lss 3), der Rest wird zur Laufzeit geeignet ersetzt. Dazu wäre nur eine recht kleine Bibliothek notwendig, die am Anfang der Datei aufgerufen wird, und die nötigen Variablen definiert, sodass eine halbwegs strukturierte Möglichkeit zu Programmieren offenstünde. Ich schreibe ausdrücklich prinzipiell, weil mir das konkret nicht so elegant gelingen will (Man müsste einen Zeilenumbruch in eine Variable quetschen können, der zu bewertende Ausdruck sollte sinnvollerweise am Anfang der Schleife stehen, etc.). Fällt da jemandem was ein?



  • Statt Batch würde ich an Deiner Stelle VBS nehmen. Damit kann man viele administrative (und destruktive 😉 ) Sachen machen.



  • (Einige Jahre der Forschung sind vergangen)

    Ich weiß nun: es wird mir nie gelingen, die Variablensubstitution bei einem Zeilenumbruch in der Variablen nicht stoppen zu lassen.



  • 19.08.2003-13.02.2007
    das ist doch mal was feines - so lange gegruebelt und immernoch nicht VBS eingesetzt ?



  • das ist doch mal was feines - so lange gegruebelt und immernoch nicht VBS eingesetzt ?

    Igitt: Basic! Nein, wäre unsportlich. Siehe:

    http://www.stallman.org/articles/on-hacking.html


Anmelden zum Antworten