Mit der Befehlsgruppierung können Sie eine Reihe von Befehlen logisch zusammenfassen, indem Sie sie in Klammern einschließen.
Für die Befehlsgruppierung gibt es zwei Hauptanwendungen. Zum einen können Sie mehrere Befehle an einer Stelle ausführen, an der normalerweise nur ein einziger Befehl zulässig ist. Nehmen wir zum Beispiel an, Sie möchten zwei verschiedene REN-Befehle in allen Unterverzeichnissen Ihrer Festplatteausführen . Sie könnten es so machen:
global ren *.wx1 *.wxo
global ren *.tx1 *.txo
Aber mit der Befehlsgruppierung können Sie das Gleiche mit einem einzigen Befehl tun:
global (ren *.wx1 *.wxo & ren *.tx1 *.txo)
Die beiden in Klammern eingesch lossenen REN-Befehle erscheinen GLOBAL als ein einziger Befehl, so dass beide Befehle für jedes Verzeichnis ausgeführt werden, die Verzeichnisse aber nur einmal und nicht zweimal durchsucht werden, was normalerweise Zeit spart.
Diese Art der Befehlsgruppierung ist am nützlichsten mit den Befehlen EXCEPT, FOR, GLOBAL und IF. Wenn Sie diesen Ansatz in einerStapeldatei verwenden, müssen Sie entweder alle Befehle der Gruppe in eine Zeile setzen oder die öffnende Klammer an das Ende einer Zeile setzen und die Befehle in die nachfolgenden Zeilen einfügen. Diefolgenden Beispiele 1 und 2 funktionieren korrekt, Beispiel 3jedoch nicht:
Beispiel 1 (korrekt):
for %f in (1 2 3) (echo hello %f & echo goodbye %f)
Beispiel 2 (richtig):
for %f in (1 2 3) (
echo hallo %f
echo auf Wiedersehen %f
)
Beispiel 3 (falsch):
for %f in (1 2 3) (echo hallo %f
echo auf Wiedersehen %f)
Wenn die obigen Beispiele in die Befehlszeile eingegeben werden, TCC als Antwort auf jede Zeile einen More? Prompt aus, bis die Befehlsgruppe geschlossen ist (d.h. die letzte Klammer erkannt wird), wie unten beschrieben.
Diezweite häufige Anwendung der Befehlsgruppierung ist die Umleitung von Ein- oder Ausgaben für mehrere Befehle, ohne dass die Umleitungssymbole wiederholt verwendet werden . Betrachten Sie zum Beispiel das folgende Batch-Dateifragment, das einige Kopfzeilen (einschließlich des heutigen Datums) und Verzeichnisanzeigen in eine Ausgabedatei mit Umleitung einfügt. Der erste ECHO-Befehl erstellt die Datei mit >, und die anderen Befehle fügen der Datei mit >> hinzu:
echo Datendateien %_datum > Dateiliste
dir *.dat >> Dateiliste
echo >> Dateiliste
echo Textdateien %_datum >> Dateiliste
dir *.txt >> Dateiliste
Mit der Befehlsgruppierung können diese Befehle viel einfacher geschrieben werden. Geben Sie dieses Beispiel in einer Zeile ein:
(echo Datendateien %_datum & dir *.dat & echo `` & echo Textdateien %_datum & dir *.txt) > Dateiliste
Die Umleitung, die außerhalb der Klammern erscheint, gilt für alle Befehle innerhalb der Klammern. Da die Umleitung nur einmal durchgeführt wird, werden die Befehle etwas schneller ausgeführt, als wenn jeder Befehl einzeln eingegeben wird. Der gleiche Ansatz kann für die REDIRECTION Eingaben und für Piping verwendet werden.
Sie können die Befehlsgruppierung auch in einer Batch-Datei oder an der Eingabeaufforderung verwenden, um Befehle auf mehrere Zeilen aufzuteilen. Dieses letzte Beispiel entspricht dem obigen Beispiel für die Umleitung, wird aber an der Eingabeaufforderung eingegeben. Beachten Sie die Eingabeaufforderung More? nach jeder unvollständigen Zeile. Keiner der Befehle wird ausgeführt, bis die Befehlsgruppe mit der schließenden Klammer abgeschlossen ist. Dieses Beispiel mussnicht in einer Zeile eingegeben werden:
[c:\] (echo Datendateien %_date
Mehr? dir *.dat
Mehr? echo.
Mehr? echoTextdateien %_date
Mehr? dir *.txt) > Dateiliste
[c:\]
Beschränkungen
Eine Gruppe von Befehlen in Klammern ist wie eine lange Befehlszeile. Die Gesamtlänge der Gruppe ist nur durch den verfügbaren Arbeitsspeicher begrenzt.
Sie können in einer Befehlsgruppeweder TEXT / ENDTEXT noch die Bezeichnungen GOTO oder GOSUB verwenden .
Jede Zeile, die Sie an der normalen Eingabeaufforderung oder an der More? -Eingabeaufforderung eingeben, und jeder einzelne Befehl innerhalb der Zeile muss innerhalb der üblichen Längenbegrenzung für Befehlszeilen liegen .