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.
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.
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.
Erstellt am 27.10.98
Zuletzt geändert am 23.05.99