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.