Kommandodateien
Wiederkehrende Kommandos können auch einmal in eine Kommandodatei geschrieben werden.
Direkteingabe
Bei der Direkteingabe wird ein eingegebenes Kommando sofort nach Abschluß der Eingabe ausgeführt.
command.com
C:\USER\HANS>dir
C:\USER\HANS>echo "hallo!"
Kommandodatei
Wenn man Kommandos in eine Textdatei schreibt, kann man sie später ausführen lassen. Zur Eingabe kann beispielsweise der Editor "edit" verwendet werden.
command.com
C:\WINDOWS>cd \user\hans
C:\USER\HANS>edit zeige.batzeige.bat
dir
echo hallo!
Nach Eingabe der beiden Zeilen wird im Editor das Kommando Datei/Speichern und das Kommando Datei/Beenden gegeben. Zur Kontrolle kann die erzeugte Datei auch noch einmal ausgegeben werden.
Aufruf
C:\USER\HANS>type zeige.bat
dir
echo hallo!
Die Kommandodatei mit dem Namen "zeige.bat" kann nun unter ihrem Namen aufgerufen werden, wobei die Endung ".bat" auch entfallen kann.
Aufruf
C:\USER\HANS>zeige.bat
Verzeichnis
hallo!
C:\USER\HANS>zeige
Verzeichnis
hallo!
C:\USER\HANS>
Der Dateityp ".bat" kommt von dem englischen Wort “batch” (Schub, Stoß [Briefe etc.]). Es geht zurück auf den Lochkartenstapel, in dem früher Kommandos gesammelt wurden.
Beispiel
Eine Startdatei, mit der immer wieder beim Start von command nötige Kommandos leicht gegeben werden können läßt sich folgendermaßen erstellen.
command.com
C:\USER\HANS>edit s.bat
s.bat
DOSKEY
PATH=C:\Programme\bin;%PATH%
Wenn solch eine Kommandodatei vorliegt, dann ist beim nächsten Aufruf von command nur noch in das Benutzerverzeichnis zu wechseln und "s" einzugeben, um das Programm "DOSKEY" zu laden und die Pfadliste zu erweitern.
command.com
C:\WINDOWS>cd \user\hans
C:\USER\HANS>s
Allerdings sollte das Kommando "PATH=C:\Programme\bin;%PATH%" nicht wiederholt im selben Interpretierer eingegeben werden, weil die Effekte sich akkumulieren und so ein langer Pfad mit unnötigen Wiederholungen entstünden. Dies läßt sich erkennen, wenn nach Pfaderweiterung das Kommando "PATH" zur Anzeige des Pfads verwendet wird.
command.com
C:\>PATH=C:\WINDOWS;C:\WINDOWS\COMMAND
C:\>PATH=C:\Programme\bin;%PATH%
C:\>PATH
PATH=C:\PROGRAMME\BIN;C:\WINDOWS;C:\WINDOWS\COMMAND
C:\>PATH=C:\Programme\bin;%PATH%
C:\>PATH
PATH=C:\PROGRAMME\BIN;C:\PROGRAMME\BIN;C:\WINDOWS;C:\WINDOWS\COMMAND
C:\>PATH=C:\Programme\bin;%PATH%
C:\>PATH
PATH=C:\PROGRAMME\BIN;C:\PROGRAMME\BIN;C:\PROGRAMME\BIN;C:\WINDOWS;C:\WINDOWS\COMMAND
C:\>PATH=C:\Programme\bin;%PATH%
C:\>PATH
PATH=C:\PROGRAMME\BIN;C:\PROGRAMME\BIN;C:\PROGRAMME\BIN;C:\PROGRAMME\BIN;C:\WINDOWS;C:\WINDOWS\COMMAND
Soll eine Stapeldatei mit Pfaderweiterung auch mehrfach aufrufbar sein, dann sollte der Pfad darin nicht erweitert sondern festgelegt werden. Dazu müssen alle im Pfad benötigten Verzeichnisse ausdrücklich in die Stapeldatei aufgenommen werden. Dabei werden allerdings später Erweiterungen des voreingestellten Pfades durch andere Programme nicht übernommen, so daß solch eine Datei dann gegebenenfalls erneut angepaßt werden muß.
s1.bat
DOSKEY
PATH=C:\Programme\bin;C:\WINDOWS;C:\WINDOWS\COMMAND
Argumente *
Einer Kommandodatei können auch Argumente übergeben werden.
Aufruf
C:\USER\HANS>edit hallo.bat
Innerhalb der Kommandodatei kennzeichnet "%1" den ersten Parameter.
hallo.bat
echo Hallo %1!
Aufruf
C:\USER\HANS>hallo Peter
Hallo Peter!
C:\USER\HANS>hallo Susanne
Hallo Susanne!
Das folgende Beispiel erlaubt es den Aufruf zweier Kommandos mit einem offen gelassenem Argument zu automatisieren. Statt des Kommandos "javac Hallo.java" gefolgt von dem Kommando "java Hallo" kann dann das einzelne Kommando "j Hallo" eingegeben werden.
j.bat
javac %1.java
java %1
Aufrufe *
Eine Stapeldatei kann auch eine andere Stapeldatei aufrufen (aktivieren). Dazu sollte das Kommando "call" verwendet werden. Die Stapeldatei "t.bat" führt beispielsweise zuerst die Stapeldatei "s1.bat" aus und ruft anschließend die Stapeldatei "j.bat" mit dem Argument "Test" auf.
t.bat
call s1.bat
call j Test
Wenn der Aufruf ohne das Kommando "call" erfolgte, so würde die Ausführung zwar auch in der aufgerufenen Stapeldatei fortgesetzt werden, doch mit deren Ende würde der gesamte Prozeß enden. Folgende Kommandos in der aufrufenden Stapeldatei (wie das Kommando "j Test") würden dann nicht mehr ausgeführt werden.