Verwendung von Aliasen in Stapeldateien

Eine Möglichkeit, die Programmierung von Batchdateien zu vereinfachen, ist die Verwendung von Aliasen, um unnötige Details in einer Batchdatei zu verbergen. Angenommen, Sie möchten, dass eine Stapeldatei auf bestimmte Fehler prüft, eine Meldung anzeigt und bei Auftreten eines Fehlers beendet wird. Dieses Beispiel zeigt eine Möglichkeit, dies zu tun:

 

setlocal

unalias *

alias error `echo. & echo ERROR: %$ & goto dispmenu`

alias fatalerror `echo. & echo FATAL ERROR: %$ & quit`

alias in `pushd %1 & %2$ & popd`

if not exist setup.btm fatalerror Missing setup file!

call setup.btm

cls

:dispmenu

text

1. Word Processing

2. Solitaire

3. Internet

4. Exit

endtext

echo.

inkey Enter your choice: %%userchoice

switch %userchoice

case 1

input Enter the file name: %%fname

if not exist fname error File does not exist

in d:\letters c:\windows\wordpad.exe

case 2

in d:\finance c:\windows\sol.exe

case 3

in d:\comm c:\windows\iexplore.exe

case 4

goto done

default

error Invalid choice, try again

endswitch

goto dispmenu

:done

endlocal

 

Der erste Alias, ERROR, zeigt einfach eine Fehlermeldung an und springt zum Label DISPMENU, um das Menü erneut anzuzeigen. Das %$ im zweiten  ECHO-Befehl zeigt den gesamten an ERROR übergebenen Text als Inhalt der Meldung an. Der ähnliche Alias FATALERROR zeigt die Meldung an und beendet dann die Batchdatei.

 

Der letzte Alias, IN, erwartet 2 oder mehr Befehlszeilenparameter. Er verwendet den ersten als neues Arbeitsverzeichnis und wechselt mit einem  PUSHD-Befehlin dieses Verzeichnis . Der Rest der Befehlszeile wird als weiterer Befehl plus möglicher Befehlszeilenparameter interpretiert, den der Alias ausführt. Dieser Alias wird hier verwendet, um in ein Verzeichnis zu wechseln, eine Anwendung auszuführen und wieder zurück zu wechseln. Er könnte auch von der Kommandozeile aus verwendet werden.

 

Die folgenden 9 Zeilen geben ein Menü auf dem Bildschirm aus, holen sich dann einen Tastendruck vom Benutzer und speichern diesen in einer Umgebungsvariablen namens userchoice.  Dann wird der  SWITCH-Befehl verwendet, um den Tastendruck des Benutzers zu testen und zu entscheiden, welche Aktion ausgeführt werden soll.

 

Es gibt noch eine andere Seite der Aliase in Batch-Dateien. Wenn Sie Ihre Batchdateien an andere weitergeben, müssen Sie daran denken, dass diese möglicherweise Aliasnamen für die von Ihnen verwendeten Befehle definiert haben. Wenn der Benutzer z. B. CD als Alias  für CDD definierthat  und Sie dies nicht erwarten, funktioniert Ihre Datei möglicherweise nicht wie gewünscht. Es gibt zwei Möglichkeiten, dieses Problem zu lösen.

 

Dieeinfachste Methode besteht darin, SETLOCAL, ENDLOCAL und UNALIAS zuverwenden , um die Aliase zu löschen, bevor die Batchdatei gestartet wird, und SETDOS, um die Sonderzeichen auszuwählen, auf die Sie angewiesen sind, und sie am Ende wiederherzustellen, wie wir es im vorherigen Beispiel getan haben. Denken Sie daran, dass SETLOCAL und ENDLOCAL nicht nur die Aliasnamen speichern und wiederherstellen, sondern auch die Umgebung, das aktuelle Laufwerk und Verzeichnis sowie verschiedene Sonderzeichen.

 

Wenn diese Methode für die Batch-Datei, an der Sie arbeiten, nicht geeignet oder notwendig ist, können Sie auch ein Sternchen * vor dem Namen eines beliebigen Befehls verwenden . Das Sternchen bedeutet, dass der nachfolgende Befehl nicht als Alias interpretiert werden soll. Zum Beispiel leitet der folgende Befehl eine Liste von Dateinamen in die Datei FILELIST um :

 

dir /b > filelist

 

Wenn der Benutzer jedoch DIR mit einem Alias neu definiert hat, bewirkt dieser Befehl möglicherweise nicht das, was Sie wollen. Um dies zu umgehen, verwenden Sie einfach:

 

*dir /b > filelist

 

Das Gleiche gilt für jeden Befehl in Ihrer Batch-Datei. Wenn Sie das Sternchen verwenden, wird die Alias-Verarbeitung deaktiviert, und der Rest des Befehls wird normal als interner Befehl, externer Befehl oder Batch-Datei verarbeitet. Die Verwendung eines Sternchens vor einem Befehl funktioniert unabhängig davon, ob bereits ein Alias mit demselben Namen wie der Befehl definiert ist oder nicht. Wenn es keinen Alias mit diesem Namen gibt, wird das Sternchen ignoriert und der Befehl wird so verarbeitet, als ob das Sternchen nicht vorhanden wäre.