Für DOS-(Turbo-*)Fans und solche, die es werden wollen:
Etwas "Hochstapelei" gefällig?

Meine selbstgeschriebenen Batches finden sich weiter unten.

Jetzt mal im Ernst: Schon mal gebatcht? Was denn, keine Ahnung??? Das läßt sich ja beheben...
Batch-Dateien haben die Endung .bat und sind unter DOS und Windows ausführbar (d.h., bei Windows CE wird's wohl nicht gehen). Es handelt sich im Prinzip um Stapel (engl. batch=Stapel) von Befehlen, die zeilenweise vom Befehlsinterpreter command.com abgearbeitet werden. Es gibt aber auch Befehle, die nur in Batchdateien vorkommen, somit sind sie in gewisser Hinsicht in einer Art von Makrosprache verfaßt. Batchdateien bestehen aus reinem ASCII-Text, also sollte man sie möglichst mit einem ASCII-Editor bearbeiten, z.B. dem guten alten DOS-Editor edit.com. Der Windows-Editor ist dafür weniger geeignet, er zeigt Umlaute und manche Sonderzeichen falsch an, da er für ANSI-Text ausgelegt ist. Am besten benutzt man einem Editor, der ASCII in ANSI umwandeln kann und umgekehrt.
Es empfiehlt sich aber besagter DOS-Editor, weil man Batches bevorzugt unter DOS probieren sollte (zumindest mache ich das immer so), dann dauert das nicht so lange. Und wenn man auf Windows partout nicht verzichten kann oder will, läuft EDIT auch in der DOS-Box.



Nun aber genug der Vorrede und auf zur Batchsprache!

Die meistbenutzten Befehle im Überblick:

@echo off

Das steht immer in der ersten Zeile der Batchdatei, um immer nur die Rückmeldungen und nicht die Befehle selbst anzuzeigen.

echo

Der Befehl "echo" gefolgt von Text zeigt besagten Text auf dem Bildschirm, z.B.
echo Das ist ein Beispieltext
zeigt
Das ist ein Beispieltext
an.
echo. gibt eine Leerzeile aus.

rem [Text]

Dahinter stehen bloß irgendwelche Bemerkungen oder außer Kraft gesetzte Befehle.

goto [Abschnitt/Sprungmarke]

Mit goto kann man die Ausführung der Batchdatei an der gewünschten Sprungmarke, die man am vorangestellten Doppelpunkt erkennt, fortsetzen, also etwa:

:start
goto abschn2

:abschn1
echo blabla

:abschn2
echo Hallo!

Der Computer wird nur "Hallo!" ausgeben, "blabla" hingegen nicht.

Man kann das auch übertreiben:

:start
goto abschn2

:abschn1
echo blabla
if not "%durch%"=="1" goto abschn3
if "%durch%"=="1" goto ende
rem siehe Abschnitte zu "if" und "set"

:abschn2
echo Hallo!
goto abschn1

:abschn3
echo Das reicht jetzt!
set durch=1
goto start

:ende
echo Jetzt ist Schluß!

Der Computer wird ausgeben:

Hallo!
blabla
Das reicht jetzt!
Hallo!
blabla
Jetzt ist Schluß!

Man sollte etwas vorsichtig mit den Sprungbefehlen sein, sonst hängt man womöglich irgendwann in einer Endlosschleife fest...
Das wäre passiert, hätte ich "set durch=1" weggelassen.

if [irgendwas] [Befehl] bzw.
if not [irgendwas] [Befehl]

Der Befehl "if" ermöglicht eine bedingte Ausführung, denn nur, wenn eine Bedingung erfüllt ist, wird der Befehl ausgeführt (engl. if = wenn, falls). Wenn man überprüfen will, ob eine Bedingung NICHT erfüllt ist, nimmt man "if not", sprich "falls nicht".
Es gibt drei Typen von If-Abfragen:

if exist [Datei] [Befehl]

Wenn eine Datei existiert, wird der Befehl ausgeführt. [Datei] kann auch durch Platzhalter repräsentiert sein, z.B. *.* oder g*.txt.

if "Variable"=="irgendwas" [Befehl]

Als Variablen sind alle Umgebungsvariablen geeignet, z.B. %1 (der erste Parameter nach dem Aufruf der Batchdatei) oder jede andere %Variable%, z.B.
if "%1"=="/?" goto help
if "%test%"=="true" echo Das ist ein Beispiel!

if errorlevel [0-255] [Befehl]

Damit kann man die Errorlevels, die ein Programm ausgibt, auswerten, z.B.
(j(a) entspr. errorlevel 1 u. n(ein) entspr. errorlevel 2)

if errorlevel 2 goto nein
if errorlevel 1 goto ja

Wichtig: Die Errorlevels müssen immer in absteigender Reihenfolge abgefragt werden!!!

for [Variable] in (ir gend was) do [irgendwas anderes]

Das ist ein For-do-Schleife, die gern eingesetzt wird, um Befehlszeilenparameter auf mehrere Sachen zu prüfen, z.B.

for %%f in (*.txt *.asc) do echo Betrifft Datei %%f

Beispiel einer Batchdatei:

@echo off
echo Die Auswahl "%1"
for %%f in (%1) do echo betrifft die Datei %%f

Diese Datei wird alle Dateien auflisten, die der Dateimaske entsprechen, die man als Parameter angegeben hat, also etwa mit dem Parameter *.txt *.asc :

Die Auswahl "*.txt *.asc"
betrifft die Datei xyz.txt
betrifft die Datei abc.txt
betrifft die Datei text.asc

Diese Dateien sind natürlich erfunden.

call [Batchdatei]

Mit dem Befehl call kann man aus einem Batch andere Batchdateien aufrufen und nach deren Beendigung wieder zum Ausgangsbatch zurückkehren.

set Umgebungsvariable=Wert

Damit weist man einer Umgebungsvariablen einen Wert zu, z.B.

set Beispiel=ja

start [Par.:/m /max /r /w][Programm/Datei/Verkn./Ordner]

Mit start kann man unter Windows 95/98 alles ausführen, was sich auch durch einen Doppelklick zum Leben erwecken läßt. Die Parameter sind:
/m für minimiert (als Symbol)
/max für maximiert (Vollbild)
/r für restored (normales Fenster)
/w für wait (wartet, bis Programm beendet)

Vor allem der letzte Parameter, /w, ist ausgesprochen nützlich. Ein Beispiel ist ein Wartungs-Batch, der erst Scandisk und nach dessen Beendigung Defrag startet.



Häufig eingesetzte externe Programme:

choice.com:

choice (/c:buchstaben) (/n) (/s) (/t:x,nn) [Frage]

wird für Benutzerabfragen Marke "Wollen Sie das wirklich tun [j/n] ?" eingesetzt.
Dabei wird ein Errorlevel ausgegeben, der nachher ausgewertet werden kann, und zwar in der angegebenen Reihenfolge der Buchstaben:
 
Option /c: zulässige Buchstaben entspr. Errorlevel
/c:gd g,d 1=g,2=d
/c:fag f,a,g 1=f,2=a,3=g
- kein /c - j,n 1=j,2=n

Der Parameter /n bewirkt, daß am Ende der Frage nicht mehr die zur Auswahl stehenden Tasten und ein Fragezeichen angezeigt werden. /s bewirkt Unterscheidung von Groß- und Kleinschreibung. Mit /t läßt sich eine Standardauswahl x festlegen, die nach nn Sekunden angewählt wird.


Meine selbst geschriebenen Batches zum komfortablen Formatieren von Disketten (2 Versionen) finden sich in diskette.zip (ca. 5 KB),
und mein Paßwort-Batch zum Vergeben und Abfragen von Startpaßwörtern (nach erstmaliger Ausführung und darauffolgender Einbindung in config.sys, siehe passwort.txt, beiliegend) ist in password.zip (ca. 5 KB) zu finden.



*Na gut, mit Fans haben Turbofans nicht so viel zu tun...

Irgendwelche Kommentare?

Erstellt am 27.10.98
Zuletzt geändert am 23.05.99