schubidu was unexpected at this time.
Was ist hier passiert?
Nun, schauen wir den folgenden Code an:ECHO-Befehl aufhört? Richtig, gerade vor der schließenden Klammer. Umgeschrieben auf mehrere Zeilen:
IF-Block eine schließende Klammer ausgeben möchte (vielleicht als Teil eines Smileys)?Eine relativ naheliegende Idee wäre folgende:
ECHO sagt uns, dass es die ganze Zeile ausgibt, solange da nicht Kram wie & oder > dazwischenkommt. Und gebe ich auf der Kommandozeile ECHO :-) ein, funktioniert das auch problemlos. In diesem IF-Block gibt es allerdings einen Fehler:
*/ einen Kommentar in C beendet. Das Verhalten, was cmd hier an den Tag legt, ist sicherlich für einzeilige IFs sinnvoll, aber in meinen Augen eher nervig, wenn man das mehrzeilig macht.Nun, da wir wissen, wonach wir Ausschau halten müssen, wäre es nett zu wissen, wie man das in Zukunft vermeidet. Meine erste Idee wäre, das Innere des Blockes in ein Unterprogramm zu verlegen:
^, also sähe der Code folgendermaßen aus:
Wenn man hingegen eine Variable hat, die Klammern enthält (zum Beispiel das Programme-Verzeichnis für 32-bit-Anwendungen auf 64-bit-Systemen), dann muß man entweder verzögerte Variablenauswertung (delayed expansion) nutzen oder aber Unterprogramme.
Dinge, die man hieraus lernen kann: Das Escapezeichen funktioniert grundsätzlich überall in Batchdateien. Jedes Zeichen kann man damit an möglichen Syntaxfehlern vorbeikriegen.
Kommentare
Neuen Kommentar abgeben