Text ausgeben mit dem Echo Befehl Verfasst am: 23.04.2009, 07:25
Der ECHO-Befehl hat zwei verschiedene (!) Funktionen:
1. Echo-Status einstellen/ausgeben
2. Textzeile ausgeben
Echo-Status einstellen/ausgeben
ECHO [ON|OFF]
Der Echo-Status legt fest, ob die folgenden Anweisungszeilen der
BAT-Datei jeweils vor der Ausfuehrung auf dem Bildschirm ausgegeben
werden (ON) oder nicht (OFF). Ausgaben erfolgen immer mit
dem (jeweils definierten) DOS-Prompt.
Normalerweise wird das ECHO in BAT-Dateien gleich am Anfang OFF
geschaltet und hoechstens streckenweise ON geschaltet, damit man
sieht, welche Befehle gerade ausgefuehrt werden. Auch zum Testen
ist ECHO ON manchmal ganz nuetzlich, um Fehler zu lokalisieren.
Der ECHO-Befehl ohne weitere Angaben veranlasst DOS, den derzeitigen
Status nach folgendem Muster auszugeben:
ECHO ist eingeschaltet
Nach dem Wort ECHO kann optional ein "=" gesetzt werden.
Leerzeichen sind erlaubt. Beispiel:
ECHO = off
ECHO =
Dies ist allerdings nicht (?) dokumentiert, und man sollte
vielleicht darauf verzichten, wenn man kompatibel bleiben will.
Text ausgeben
Bei allen ECHO-Befehlen, die nicht den obigen Bedingungen entsprechen,
wird der Rest der Zeile auf dem Bildschirm ausgegeben
(genauer gesagt: zum Standard Output Device). Beispiel:
ECHO Dies ist eine ECHO-Zeile
Durch Leerzeichen laesst sich der Text einruecken:
ECHO Dieser Text ist eingerueckt
Das erste Leerzeichen nach ECHO gilt jedoch als Trennzeichen
und gehoert nicht zum Text. Alternativ kann ein Punkt verwendet
werden, z.B:
ECHO.Fertig
ECHO.OFF (OFF ist hier Text!)
Auf diese Weise kann auch eine leere Zeile, also ein extra
Zeilenvorschub, produziert werden (ECHO allein geht nicht,
s. ECHO-Status!). Beispiel:
ECHO.
Der Punkt muss ohne Leerzeichen anschliessen, sonst ist er Text!
Bei MS-DOS koennen anstelle des Punktes auch andere Sonderzeichen
verwendet werden, sofern sie nicht in Befehlen bzw. Dateinamen
gueltig sind (,:;+/). Probiert's mal auf der Befehlszeile!
Ganz wichtig:
Textzeilen, die per ECHO ausgegeben werden sollen, duerfen
nicht die Zeichen "<", ">" oder "|" enthalten, da diese fuer
Umleitungen/PIPES reserviert sind. Wer mal nicht dran denkt,
wird sich ueber auesserst merkwuerdige Fehlermeldungen oder
unerwartet auftauchende Dateien wundern.
ECHO-Ausgaben duerfen auch Steuerzeichen (ASCII 1..31) enthalten,
sofern sie nicht die Abarbeitung sabotieren (wie z.B. CR oder EOF)
Wenn der Editor es erlaubt, kann man z.B. jederzeit ein Control-G
(BELL, ASCII 7) einbauen. Ausprobieren!
Klammeraffe
Waehrend das ECHO ON ist, kann es bei Bedarf fuer einzelne Zeilen
abgeschaltet werden, indem ein Klammeraffe an den Anfang der Zeile
gesetzt wird (ab MS-DOS 3.3). Spezielles Beispiel:
@ECHO OFF
Ohne den Klammeraffen wuede der Befehl selbst noch ge-echot, bevor
er wirksam wird (!)
ECHO auf der Befehlsebene
Der ECHO-Befehl kann grundsaetzlich auch auf der Befehlsebene
verwendet werden, was aber nur in Sonderfaellen sinnvoll ist.
Achtung: ECHO OFF bewirkt, dass kein DOS-Prompt mehr erscheint!!
Mit anderen Worten: wenn der Prompt mal auf unerklaerliche Weise
verschwunden ist: einfach ECHO ON versuchen.
Weitere Informationen
Interresant wird der ECHO-Befehl erst mit Umleitungen/PIPES.
Ausserdem koennen mit Hilfe der ANSI-Sequenzen Farben und Cursor-
Steuerungen (u.a.) ins Spiel gebracht werden.
Mehr dazu in spaeteren Lektionen.
ECHO Umleitung
Ein ECHO-Text kann sehr einfach mit einem ">"-Zeichen (Pfeil nach
rechts) in eine Datei oder an ein anderes Geraet - wie LPT1 -
umgeleitet werden. Beispiel:
ECHO irgendwas> TEST.DAT
ECHO irgendwas> LPT1
Genau wie auf dem Bildschirm, wird auch in diesen Faellen der
Text mit einem Zeilenvorschub (CR,LF) ausgegeben. Eine leere
Zeile (also nur ein Zeilenvorschub) kann so ausgegeben werden:
ECHO.> TEST.DAT
Die angegebene Datei wird immer kommentarlos neu angelegt, d.h.
eine evtl. vorhandene Datei wird geloescht!
Es ist aber auch moeglich, eine Zeile an eine vorhandene Datei
anzufuegen. Dazu werden einfach zwei Pfeile (">>") verwendet:
ECHO eine Zeile > TEST.DAT
ECHO noch eine Zeile >> TEST.DAT
Bei aelteren DOS-Versionen (-3.3) darf allerdings die bestehende
Datei keine Ende-Markierung (EOF, Control-Z) haben, sonst wird man
die zusaetzliche Zeile vergeblich suchen...
Uebrigens: eventuelle Leerzeichen vor dem Pfeil werden mit in die
Datei geschrieben!
Die ECHO-Umleitungen lassen sich gut auf der Befehlsebene testen. _________________