ANSI.SYS-TIP: Escapesequenz

Das man mit dem Bildschirm- und Tastaturtreiber ANSI.SYS viel erreichen kann, ist wohl unumstritten. Oftmals gibt man eine solche Befehlsfolge mit dem PROMPT-Befehl ein, da man sonst die Escapesequenz (Charakter 27, Darstellung „^[“), nicht unter DOS erzeugen kann.

So kann man seinem Computer ein X für ein U vormachen, wenn man ANSI.SYS installiert hat und den Befehl PROMPT$e[„X“;„U“p eingibt. Leider wird aber durch diese Eingabe auch das Prompt gelöscht, welches danach also rekonstruiert werden muß.

Zwar kann man das auch mit der folgenden Batchdatei realisieren, aber man verschenkt doch wertvollen Speicherplatz:

@set op=%prompt%
@prompt$e["X","U"p
@prompt=%op%

Kürzer und einfacher ist da der Weg über den Befehl ECHO, da erstens ECHO mit @ECHO OFF ausgeschaltet sein darf und zweitens, keine Leerzeile auf den Prompt-Befehl folgen muß, die die Einstellung vornimmt:

@echo off
echo ^[["X";"U"p

Problematisch an dieser Version ist aber, wie eingangs erwähnt, die Erzeugung der einleitenden Escapesequenz, mit der jede ANSI betreffende Einstellung beginnen muß. Zwar kann man die Zeichenfolge „^[“, die für die Escapesequenz steht, per Tastatur einzeln eingeben, aber sie ist dann nicht gleichbedeutend wie die Escapesequenz „^[“, da sie dann aus zwei Zeichen besteht, während die Escapesequenz tatsächlich nur ein Zeichen beinhaltet, obwohl zwei auf dem Bildschirm ausgegeben werden.

Es bleibt einem also nur der Ausweg über eine „höhere“ Programmiersprache, damit der Charakter 27 in Batchdateien genutzt werden kann. Ich habe mir dieses Zeichen mittels GW-BASIC geklaut und in die Batchdatei ANSIECHO.BAT geschrieben:

10 open "ansiecho.bat" for output as #1
20 print #1,"ECHO ";chr$(27);chr$(91);
30 close

Möchte ich also nun eine Einstellung mit ANSI.SYS vornehmen, so lade ich ANSIECHO.BAT in meine Textverarbeitung und ergänze den ECHO-Befehl um die gewünschte Syntax, bevor ich den Text unter einem neuen Namen abspeichere.

Weil viele Wege nach ROM führen, kann man sich natürlich die Escapesequenz auch durch andere Programmiersprachen ergaunern !

Portfolio-User haben es dagegen etwas einfacher und behelfen sich mit der eingebauten Tabellenkalkulation. Dort wird einfach in die erste Zelle, des ansonsten leeren Arbeitsblattes, der Wert 27 eingegeben. Nach dem diese Eintragung unter dem Namen UNNAMED.WKS gespeichert wurde, lädt man diese in die Textverarbeitung und löscht alle Zeichen vor und hinter der Zeichenfolge „^[“. Anschließend setzt man vor ihr noch den Befehl ECHO, bevor man den so entstandenen Text als ANSIECHO.BAT abspeichert.

Auch alle anderen Steuerzeichen kann man so einfangen und in Variablen festhalten !

PS: Probiert doch mal in der PoFo-Textverarbeitung die Tastenfolge ALT-Ž ALT-Ü aus. Dieser Weg ist einfacher und erzeugt ebenfalls das ESC-Zeichen.

Lars Aschenbach