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 .