1. Grundlagen
2. Aufbau
3. Variablen
4. Kontrollstrukturen
5. Kommandozeilenparameter
6. Call
7. Zusammenfassung
Der Kommandointerpreter COMMAND.COM ist auch ein
kleiner Interpreter einer Programmiersprache. Er kann einfachste kleine
Programme abarbeiten, die in der Regel nur eine Aufzählung von
DOS-Kommandos oder Programmaufrufen sind. Diese Programme werden
BATCH-Programme genannt, von engl. batch (Stapel). Im einfachsten
Fall besteht eine BATCH Datei also aus einer Aufzählung von DOS--Befehlen,
die dann hintereinander abgearbeitet werden.
Dateien, die nach den Regeln dieser Sprache erstellt
wurden haben .BAT als vorgeschriebene Endung und sind unter DOS
gleich ausführbar wie Programme.
Wenn Sie eine Batchdatei zur Fehlersuche zeilenweise
abarbeiten wollen, so rufen Sie einen zweiten Kommandointerpreter auf, mit
dem Parameter /Y und der abzuarbeitenden
Batch-Datei:
COMMAND /Y test.bat
[... zurück zum Inhalt]
2.1 Abarbeiten eines
Befehls-Stapels
BATCH-Dateien sind reine Textdateien (ASCII) und können
mit jedem beliebigen Editor (z.B. EDIT) erstellt werden. Im einfachsten
Fall enthalten sie, wie schon gesagt, nur mindestens einen
DOS-Befehl: CLS
DIR /p
Damit ist es also leicht möglich, komplizierte Befehle
mit vielen Parametern einfach zugänglich zu machen, ohne sich die
Parameter einzeln merken zu müssen. Um z.B. die Einstellung eines
seriellen Druckers mit MODE zu vereinfachen könnten Sie in eine
Datei DRUCKER.BAT
schreiben: MODE COM1 baud=9600 parity=N data=8 stop=1
MODE LPT1=COM1
Somit würde es genügen den Befehl DRUCKER
einzugeben, statt jedesmal die beiden obigen Zeilen.
2.2 Textausgabe mit ECHO
Wenn eine Batch-Datei abgearbeitet wird, so werden auch
die darin enthaltenen Befehle auf dem Bildschirm angezeigt. Diese
Eigenschaft ist oft störend und kann daher aus- und auch wieder
eingeschaltet werden. Das geschieht mit dem Befehl ECHO. Dabei
schreiben Sie: ECHO OFF
um das Echo (die Darstellung des Befehls auf dem
Bildschirm) auszuschalten und ECHO ON
um es wieder zu aktivieren. Üblicherweise wird das Echo
in Batch-Dateien gleich zu Anfang abgeschaltet. Damit aber der Befehl
ECHO OFF nicht selbst trotzdem dargestellt wird, wird ihm ein
Klammeraffe (@) vorgestellt,
also: @ECHO OFF
Der Befehl ECHO wird aber auch benutzt, um
beliebige Textausgaben auf dem Bildschirm erscheinen zu lassen. Dabei wird
alles, was hinter einem ECHO Befehl steht als Textzeile auf dem
Schirm abgebildet. (Außer ON und OFF) Dazu ist es nicht nur möglich,
sondern auch geradezu notwendig, das ECHO vorher abzuschalten weil sonst
der Befehl ECHO TEXT und in der nächsten Zeile erst der
Text selbst auf dem Schirm erscheinen würde: @ECHO OFF
ECHO Das ist eine erste Batchdatei.
...
Ohne jeden Parameter gibt ECHO den jeweiligen
Zustand (ON oder OFF) aus, nicht etwa eine Leerzeile. Um eine Leerzeile
auszugeben müssen Sie den ECHO-Befehl mit direkt folgendem Punkt
angeben also ECHO.
2.3 Anhalten des Ablaufs mit PAUSE
Oft ist es nötig, die Abarbeitung des Programms an einer
bestimmten Stelle anzuhalten um z.B. auf einen Diskettenwechsel zu warten.
Das geschieht mit dem Befehl PAUSE. Dabei wird eine Meldung
ausgegeben, die besagt, daß eine Taste gedrückt werden soll, wenn es
weiter gehen soll. Eine Batch Datei, die den Inhalt dreier Disketten in
ein Verzeichnis kopiert könnte also z.B. so aussehen: @ECHO OFF
ECHO Bitte die erste Diskette einlegen...
PAUSE
COPY a:\*.* c:\VERZ1
ECHO Bitte die zweite Diskette einlegen...
PAUSE
COPY a:\*.* c:\VERZ1
ECHO Bitte die dritte Diskette einlegen...
PAUSE
COPY a:\*.* c:\VERZ1
ECHO Fertig...
2.4 Kommentare
Innerhalb einer Batch-Datei werden Kommentare mit dem
Befehl REM eingeleitet. Zeilen, die mit diesem Befehl beginnen
werden vom Kommandointerpreter einfach ignoriert. Damit ist es nicht nur
möglich, einfache Kommentare zum besseren Verständnis einzufügen, sondern
auch einzelne Befehle, die nicht ausgeführt werden sollen
auszuklammern.
[... zurück zum Inhalt]
MS-DOS kennt die Möglichkeit, Umgebungsvariablen zu
definieren, eins der bekanntesten Beispiele ist die PATH Variable, in der
der Suchpfad angegeben wird, der nach ausführbaren Dateien durchsucht
werden soll. Es gibt mehrere solcher Variablen etwa TEMP, COMSPEC. Auf
diese Variablen kann in einer Batch-Datei zugegriffen werden. Dazu muß der
Variablennamen innerhalb von Prozentzeichen (%) aufgeführt
werden: @ECHO OFF
ECHO Die Pfad Variable PATH enthält die Einträge:
ECHO %PATH%
ECHO Als Kommandointerpreter wird %COMSPEC% benutzt.
Solche Variablen können beliebig gesetzt werden, mit dem
Befehl SET VARIABLE=WERT
werden sie erzeugt, mit einem einfachen SET
VARIABLE= werden sie wieder gelöscht. Sie dürfen auch Leerzeichen
enthalten: @ECHO OFF
SET VAR1=Hallo
SET VAR2=Hans Hugo Häberlein
ECHO %VAR1% %VAR2%
SET VAR1=
SET VAR2=
Vorsicht: Die bereits
bestehenden Umgebungsvariablen wie PATH oder TEMP sollten natürlich nicht
gelöscht werden, wenn nicht erwünscht ist, daß sie nach Ablauf der
Batch-Datei weiter gelöscht bleiben.
[... zurück zum Inhalt]
Kontrollstrukturen sind Möglchkeiten, den linearen Ablauf
einer Batch-Datei zu verändern. Dazu stehen hier leider nur wenige zur
Verfügung, es reicht aber für die wichtigsten
Aufgaben.
4.1 GOTO
Mit dem Befehl GOTO können Sie den
Kommandointerpreter dazu bringen, nicht in der nächsten Zeile mit der
Bearbeitung der Datei fortzufahren, sondern sie befehlen ihm zu einer
bestimmten Stelle in der Datei zu springen. Diese Stelle wird als Marke
bezeichnet und mit einem Doppelpunkt und einem Markennamen gebildet. So
lassen sich z.B. Endlosschleifen programmieren: @ECHO OFF
:Anfang
ECHO in der Schleife
GOTO Anfang
4.2 IF
Mit der IF Anweisung können Sie drei verschiedene
Bedingungen überprüfen, die Existenz einer Datei, die Gleichheit zweier
Zeichenketten und den Rückgabewert des zuletzt gelaufenen DOS-Programms
(ERRORLEVEL). Durch das Zufügen eines NOT können auch die jeweils
gegenteiligen Bedingungen Überprüft werden. (Nichtexistenx, Ungleichheit
oder die Tatsache daß ein Programm NICHT mit einem bestimmten Rückgabewert
beendet wurde) In der Regel werden IF-Anweisungen mit dem GOTO Befehl
verbunden, sie können jedoch auch einen einzigen Befehl
veranlassen.
4.2.1 Existenz von Dateien
überprüfen
Syntax: IF [NOT] EXIST Dateiname Befehl
Ein Beispiel, das eine Datei nur dann kopiert, wenn sie
existiert und sonst eine Fehlermeldung ausgibt wäre
etwa: @ECHO OFF
IF NOT EXIST test.dat GOTO fehler
COPY test.dat c:\verz1
GOTO ende
:fehler
ECHO Datei TEST.DAT nicht gefunden !
:ende
Tip: Um zu überprüfen, ob ein Verzeichnis
existiert, können Sie einfach die Existenz der Datei NULL in diesem
Verzeichnis abfragen. Existiert sie, so existiert auch das
Verzeichnis.
4.2.2 Zeichenkettenvergleich
Syntax: IF [NOT] "Zeichenkette1"=="Zeichenkette2" Befehl
Hier können zwei Zeichenketten miteinander verglichen
werden, beide sollten immer in doppelten Anführungszeichen stehen. Als
Zeichenketten können sowohl eingetippte Wörter, Umgebungsvariablen (siehe
unten) als auch Kommandozeilenparameter (siehe auch weiter unten) benutzt
werden. Ein kurzes Beispiel, das überprüft ob ein Kommandozeilenparameter
eingegeben wurde: @ECHO OFF
IF "%1"=="" GOTO fehler
...
GOTO ende
:fehler
ECHO Keine Parameter eingegeben...
:ende
4.2.3 ERRORLEVEL überprüfen
Syntax: IF [NOT] ERRORLEVEL Wert Befehl
Jedes DOS Programm liefert beim Beenden einen
Abschluß-Fehlercode. Falls das Programm fehlerfrei abgelaufen ist, so gibt
es meist den Wert 0 zurück, falls es Fehler gab eine Fehlernummer. (Man
kann sich leider bei DOS nicht darauf verlassen) Diese Fehlernummer kann
auch mittels IF-Anweisung abgefragt werden. Wichtig ist, daß hier
immer mit der größten Nummer angefangen wird, weil die IF-Anweisung
komischerweise nicht auf Gleichheit, sondern auf größer oder gleich prüft
Ein Beispiel für diese Anwendung gibt es gleich im nächsten Abschnitt,
CHOICE ist nämlich ein Programm, das sein Ergebnis über den ERRORCODE
zurückgibt...
4.3 CHOICE
Um auch so etwas wie ein Menü realisieren zu können,
steht der Befehl CHOICE zur Verfügung. CHOICE erwartet als
Parameter einen Satz, der auf dem Bildschirm ausgegeben wird und eine
Aufzählung von Buchstaben, die als Antwort gültig sind. Also
etwa: @ECHO OFF
CHOICE /C:ABC Drücken sie die A, B oder C Taste...
IF ERRORLEVEL 3 ECHO C eingegeben.
IF ERRORLEVEL 2 ECHO B eingegeben.
IF ERRORLEVEL 1 ECHO A eingegeben.
...
In diesem Fall wird keine andere Taste als A, B oder C
anerkannt. Sollten Sie die Aufzählung der Tasten weglassen, so wird
standardmäßig die Auswahl J und N angenommen (bei englischem DOS natürlich
dann Y und N).
Es ist auch möglich, ein Timeout einzustellen und zu
definieren, welche Taste nach einer bestimmten Zeit als gedrückt gelten
soll. Dazu ist der Parameter /T c,nn anzugeben, wobei hier
c für die angenommene Taste steht und nn für die Anzahl der
Sekunden, die auf eine Eingabe gewartet werden soll.
Durch Angabe des Parameters /S wird zwischen
Groß- und Kleinschreibung unterschieden.
Der Parameter /N+ unterdrückt die Abfrage,
stellt aber den Text dar.
4.4 FOR
Die FOR-Anweisung arbeitet eine Liste ab, es
realisiert eine Schleife, die so oft durchlaufen wird, wie die Liste
Elemente vorweist. Als Liste können sowohl Dateinamen mit Metazeichen
(z.B. *.*) als auch Zeichenketten verwendet werden. Um sich etwa alle
Textdateien im aktuellen Verzeichnis anzuschauen könnten Sie
schreiben @ECHO OFF
FOR %%a IN (*.txt) DO type %%a
Als Variablen müssen Sie immer einbuchstabige Namen
wählen, die mit zwei % Zeichen versehen sind. (Außerhalb von Batch-Dateien
genügt ein %)
[... zurück zum Inhalt]
5.1 Normale Parameter
Batch-Dateien können, wie alle anderen Programme auch
Kommandozeilenparameter bearbeiten. Diese Parameter werden innerhalb der
Datei mit den Namen %1 bis %9 bezeichnet. Um also etwa eine Batch-Datei zu
erstellen, die den Inhalt einer Diskette in ein bestimmtes Verzeichnis
kopiert, könnten Sie schreiben: @ECHO OFF
ECHO Bitte die Diskette einlegen...
PAUSE
COPY A:\*.* %1
ECHO Fertig.
Würden Sie diese Datei ACOPY.BAT nennen und sie
folgendermaßen aufrufen: ACOPY C:\VERZ1
so stünde in der Zeile mit dem Kopierbefehl jetzt statt
dem %1 der angegebene Parameter C:\VERZ1 und der Befehl würde also
lauten: ...
COPY A:\*.* C:\VERZ1
...
Es sind also genau neun Parameter mit dieser Methode
ansprechbar, der Parameter %0 hat eine Sonderbedeutung, er enthält den
Namen der Batch-Datei.
5.2 Mehr als 9 Parameter
Mit einem Trick und dem Befehl SHIFT können auch
mehr als neun Parameter benutzt werden, die können dann aber nicht einzeln
mit Nummern angesprochen werden. SHIFT verschiebt einfach alle
Parameter um eins nach links. Das heisst, der erste Parameter fällt weg,
der zweite wird zum ersten, der dritte zum zweiten usw. Damit sind also
auch die Abarbeitung aller Parameter möglich, auch wenn Sie garnicht
wissen, wie viele eigentlich benutzt wurden. Hier ein
Beispiel:
Das folgende Programm schreibt alle angegebenen Parameter
auf den Bildschirm, keinen zuviel und aber auch keinen
zuwenig... @ECHO OFF
:anfang
IF "%1"=="" GOTO ende
ECHO %1
SHIFT
GOTO anfang
:ende
So ist es also auch möglich, Programme zu schreiben, die
für alle Parameter das gleiche tun, ohne zu wissen, wieviele es denn sind.
Es wird solange immer nur der erste Parameter ausgewertet, solange es
einen ersten Parameter gibt. Nach jedem Durchgang wird mit SHIFT
eine Verschiebung vorgenommen...
Mit CALL können Sie aus einer Batch-Datei heraus
andere Batch-Dateien aufrufen. Machen Sie es einfach ohne Call, so
funktioniert zwar der Aufruf der anderen Batch-Dtei, nach deren
Abarbeitung kehrt die Kontrolle nicht mehr zur aufrufenden Batch-Datei
zurück.
[... zurück zum Inhalt]
7 Zusammenfassung der Syntax
für alle BATCH-Befehle
Die folgenden Kurzbeschreibungen sind der Online Hilfe
von MS-DOS entnommen und können jederzeit durch die Eingabe BEFEHL
/? abgerufen werden.
7.1 ECHO
Zeigt Meldungen an oder schaltet die Befehlsanzeige ein
(ON) oder aus (OFF). ECHO [ON | OFF]
ECHO [Meldung]
ECHO ohne Parameter zeigt die aktuelle Einstellung der
Befehlsanzeige an.
7.2 PAUSE
Hält die Ausführung einer Stapelverarbeitungsdatei an und
zeigt folgende Meldung an: Eine beliebige Taste drücken, um fortzusetzen
7.3 IF
Verarbeitet Ausdrücke mit Bedingungen in einem
Stapelverarbeitungsprogramm.
IF [NOT] ERRORLEVEL Nummer Befehl
IF [NOT] Zeichenfolge1==Zeichenfolge2 Befehl
IF [NOT] EXIST Dateiname Befehl
NOT |
Der Befehl soll nur
dann ausgeführt werden, wenn die Bedingung nicht erfüllt
ist.
|
ERRORLEVEL Nummer |
Diese Bedingung ist
erfüllt, wenn das zuletzt ausgeführte Programm einen Code größer
oder gleich Nummer zurückliefert.
|
Befehl |
Der auszuführende
Befehl, falls die Bedingung erfüllt ist.
|
Zeichenfolge1==Zeichenfolge2 |
Diese Bedingung ist
erfüllt, falls die Zeichenfolgen übereinstimmen.
|
EXIST Dateiname |
Diese Bedingung ist
erfüllt, falls die angegebene Datei existiert.
|
7.4 GOTO
Setzt die Ausführung eines Stapelverarbeitungsprogramms
an einer Marke fort. GOTO Marke
Marke Eine Zeichenfolge als Marke in einem
Stapelverarbeitungsprogramm.
Marken stehen allein am Zeilenanfang mit einem
vorangestellten Doppelpunkt.
7.5 FOR
Führt einen Befehl für jede einzelne Datei eines Satzes
von Dateien aus. FOR %%Variable IN (Satz) DO Befehl [Parameter]
%%Variable |
Ein ersetzbarer
Parameter (bestehend aus einem einzelnen Zeichen). |
(Satz) |
Ein Satz von mindestens
einer Datei. Platzhalter sind zulässig. |
Befehl |
Befehl, der für jede
Datei ausgeführt werden
soll. |
Parameter |
Parameter und Optionen
für den angegebenen
Befehl. |
7.6 CHOICE
Wartet auf die Auswahl des Benutzers der angezeigten
Optionen. CHOICE [/C[:]Tasten] [/N] [/S] [/T[:]c,nn] [Text]
/C[:]Tasten |
Angabe der zulässigen
Tasten. Standard ist JN. |
/N |
Keine Anzeige eines
?-Zeichens am Ende der
Meldung. |
/S |
Groß-/Kleinschreibung
für Tasten wird beachtet. |
/T[:]c,nn |
Nach nn Sekunden wird
Standardauswahl c
ausgeführt. |
Text |
Meldung, die angezeigt
wird. |
ERRORLEVEL ist auf die Position der gedrückten Taste aus
der Tastenauswahl gesetzt.
7.7 SHIFT
Verändert die Position ersetzbarer Parameter in einem
Stapelverarbeitungsprogramm. SHIFT
7.8 CALL
Ruft ein Stapelverarbeitungsprogramm von einem anderen
aus auf. CALL [Laufwerk:][Pfad]Dateiname [Parameter]
7.9 SET
Setzt oder entfernt MS-DOS-Umgebungsvariablen oder zeigt
sie an. SET [Variable=[Zeichenfolge]]
Variable |
Der Name der
Umgebungsvariable. |
Zeichenfolge |
Eine Zeichenfolge, die
der Variablen zugewiesen werden
soll. |
Der Befehl SET ohne Parameter zeigt die derzeitigen
Umgebungsvariablen an.
Diese Seite wurde zuletzt bearbeitet am 16.05.01, 06:10h
Copyright © by INFOTEC webmaster@info-tec.de
HTML-Redesign © 2008
Thomas Antoni --- Visit my
Homepage www.antonis.de
---=== Hottest MS-DOS Stuff on Earth !! ===---
|