DieUmleitung kann verwendet werden, um dieGeräte Standardeingabe (stdin), Standardausgabe (stdout), und Standardfehler (stderr) von ihren Standardeinstellungen (Tastatur und Bildschirm) auf ein anderes Gerät, z. B. NUL oder einen seriellen Anschluss, auf eine Datei oder auf die Windows-Zwischenablageumzuleiten. Bei der Verwendung der Umleitung für ein Gerät ist ein gewisser Ermessensspielraum erforderlich.

 

Die Umleitung gilt immer für einen bestimmten Befehl und ist nur für die Dauer dieses Befehls gültig. Nach Beendigung des Befehls kehren die Zuweisungen für Standardeingabe, Standardausgabe und Standardfehler zu dem zurück, was sie vor dem Befehl waren.

 

TCCDie Ausgabe des Befehls erfolgt normalerweise in ANSI. Wenn Sie die Ausgabe in Unicode umleiten wollen, müssen Sie entweder die Startoption /U in TCC oder die Option Unicode Output in TCMD.INI verwenden.

 

In den folgenden Beschreibungen  bedeutet Dateiname entweder den Namen einer Datei oder eines entsprechenden Geräts (CON für Tastatur und Bildschirm; CLIP: (oder CLIP0: - CLIP9:) für die Zwischenablage; NUL für das "Null"-Gerät usw.).

 

Hier sind die Standardumleitungsoptionen, die von TCC unterstützten Umleitungsoptionen (siehe unten für zusätzliche Umleitungsoptionen unter Verwendung numerischer Dateihandles):

 

Onestep        Eingabe-Umleitung

Onestep        Umleitung der Ausgabe

Onestep        Besondere Überlegungen für bestimmte Befehle

Onestep        NoClobber

Onestep        Mehrere Umleitungen

Onestep        Erstellen einer leeren Datei

Onestep        Umleitung nach Handle

Onestep        "Hier-Dokument"-Umleitung

Onestep        "Hier-Zeichenfolge"-Umleitung

 

Eingabe-Umleitung

 

< DateinameUm Eingaben von einer Datei oder einem Gerät zu erhalten, anstatt von der Tastatur.

 

Ausgabe-Umleitung

 


Überschreiben

anhängen

Standardausgabe

> Dateiname

>> Dateiname

Standardfehler

>&> Dateiname

>>&> Dateiname

Standardausgabe und Standardfehler zusammenführen

>& dateiname

>>& dateiname

 

Um eine Umleitung zu verwenden, setzen Sie das Umleitungssymbol und den Dateinamen an das Ende der Befehlszeile, nach dem Befehlsnamen und eventuellen Parametern. Um zum Beispiel die Ausgabe des  DIR-Befehls in eine Datei namens DIRLIST umzuleiten , könnten Sie eine Befehlszeile wie diese verwenden:

 

dir /b *.dat > dirlist

 

Sie können für ein und denselben Befehl jede beliebige Kombination aus Eingabe- und Ausgabeumleitung verwenden, die für Ihren Zweck geeignet ist. Zum Beispiel sendet dieser Befehl die Eingabe  aus der Datei DIRLISTan das externe Programm SORT und die Ausgabe von SORT an die Datei DIRLIST.SRT:

 

sort < dirlist > dirlist.srt

 

Sie können Text in oder aus der  Windows-Zwischenablage umleiten , indem Sie den Pseudo-Gerätenamen CLIP: verwenden  (der Doppelpunkt ist erforderlich). Die Umleitung in die Zwischenablage erfolgt immer in UTF16 Unicode.

 

Wenn Sie die Ausgabe eines einzelnen internen Befehls wie DIR umleiten , endet die Umleitung automatisch, wenn dieser Befehl beendet ist. Wenn Sie eine Stapeldatei mit Umleitung starten, wird die gesamte Ausgabe der Stapeldatei umgeleitet, und die Umleitung endet, wenn die Stapeldatei beendet ist. Wenn Sie die Umleitung nach der schließenden Klammer einer Befehlsgruppe verwenden  (z. B. ... > report), wird die gesamte Ausgabe der Befehlsgruppe umgeleitet, und die Umleitung endet, wenn die Befehlsgruppe beendet ist.

 

Sie können das Format der umgeleiteten Ausgabe ändern. Diese Optionen setzen die Direktiven UnicodeOutput und UTF8Output in TCMD.INI außer Kraft. Hinweis: Diese Optionen funktionieren nur für die Umleitung der Ausgabe von TCC internen Befehlen und Batch-Dateien.

 

>:aUmgeleitete Ausgabe (STDOUT und/oder STDERR) ist ANSI (8-Bit-Zeichen)
>:uUmgeleitete Ausgabe ist UTF16 Unicode
>:8 oder >:u8Umgeleitete Ausgabe ist UTF8

 

>>:aAngehängte umgeleitete Ausgabe (STDOUT und/oder STDERR) ist ANSI (8-Bit-Zeichen)
>>:uAngehängte umgeleitete Ausgabe ist UTF16 Unicode
>>:8 oder >>:u8Angehängte umgeleitete Ausgabe ist UTF8

 

Besondere Überlegungen für bestimmte Befehle

 

Sie können nicht die gesamte Ausgabe der Ausführung einer  DO-Schleife umleiten , da der  DO-Befehl und das dazugehörige ENDDO nicht Teil einer Befehlsgruppe sein dürfen.

 

Um die Ausgabe eines TEXT-Befehls umzuleiten , fügen Sie die Umleitungssyntax an den  TEXT-Befehl an.

 

Wenn Sie einen  FOR- oder  GLOBAL-Befehl ausführen , wird die Umleitung für jede Iteration separat durchgeführt, basierend auf dem aktuellen Verzeichnis für diese Iteration. Dies kann dazu führen, dass die Ausgabedatei wiederholt überschrieben wird oder dass in jedem Verzeichnis eine eigene Ausgabedatei erstellt wird. Um eine einzige, kumulative Ausgabedatei zu erzeugen, verwenden Sie die Befehlsgruppierung wie im folgenden Beispiel:

 

( for /r %f in (*.btm) echo %@full[%f] ) > c:\temp\btmlst

 

NoClobber

 

Wenn die Ausgabe mit >, >& oder >&>in eine Datei geleitet wird  und diese Datei bereits existiert, wird sie überschrieben. Sie können vorhandene Dateien schützen, indem Sie den  Befehl SETDOS /N1, die  Einstellung Umgeleitete Ausgabedateien schützen auf der Registerkarte Start der Konfigurationsdialoge oder die  OptionUmgeleitete Ausgabedateien schützen verwenden .

 

Wenn die Ausgabe mit >>, >>& oder >>&>an eine Datei angehängt wird , wird die Datei erstellt, wenn sie noch nicht vorhanden ist. Wenn jedoch der NoClobber-Modus wie oben beschrieben eingestellt ist, wird bei der Umleitung durch Anhängen keine neue Datei erstellt; wenn die Ausgabedatei nicht existiert, wird stattdessen eine "Datei nicht gefunden" oder eine ähnliche Fehlermeldung angezeigt.

 

Sie können die aktuelle Einstellung von NoClobber vorübergehend außer Kraft setzen, indem Sie ein Ausrufezeichen [!] nach dem Umleitungssymbol verwenden.  Zum Beispiel, um die Ausgabe von DIR in die Datei DIROUT umzuleiten  und das Überschreiben einer vorhandenen Datei trotz der NoClobber-Einstellung zu erlauben:

 

dir >! dirout

 

Mehrere Umleitungen

 

Umleitungen sind vollständig verschachtelbar. Sie können beispielsweise eine Stapeldatei aufrufen und deren gesamte Ausgabe in eine Datei oder ein Gerät umleiten. Die Ausgabeumleitung eines Befehls innerhalb der Batchdatei wird nur für diesen Befehl wirksam; wenn der Befehl abgeschlossen ist, kehrt die Ausgabe in die umgeleitete Ausgabedatei oder das Gerät zurück, das für die gesamte Batchdatei verwendet wird.

 

Erstellen einer leeren Datei

 

Sie können die Umleitung verwenden, um eine leere (Null-Byte-)Datei zu erstellen. Geben Siedazu >Dateiname als Befehl ein , wobei vor dem  >-Zeichen kein eigentlicher Befehl stehen darf.  Wenn Sie Protect redirected output file aktiviert haben , verwenden Sie >!filename.

 

Umleitung nach Handle

 

Zusätzlich zu den oben genannten Umleitungsoptionen unterstützt TCC unterstützt auch die  CMD-Syntax:

 

n>DateiUmleitung von Handle n in die genannte Datei
n>&mUmleitung von Handle n an denselben Ort wie Handle m

 

Achtung! Sie dürfen keine Leerzeichen zwischen n und > oder zwischen >, & und m in der zweiten Form setzen .  Die Werte von n und m müssen einstellige Dezimalzahlen sein und stehen für Datei-Handles. Windows definiert 0, 1 und 2 wie in der folgenden Tabelle dargestellt.

 

Handle

Zuweisung

0

Standardeingabe

1

Standardausgabe

2

Standardfehler

 

Die Syntax n>file leitet die Ausgabe von Handle n in eine Datei um . Sie können diese Form verwenden, um zwei Handles an verschiedene Stellen umzuleiten. Zum Beispiel:

 

dir > outfile 2> errfile

 

sendet die normale Ausgabe in eine Datei namens OUTFILE und alle Fehlermeldungen in eine Datei namens ERRFILE.

 

Die  Syntax n>&m leitet das Handle n an dasselbe Ziel wie das zuvor zugewiesene Handle m. Um beispielsweise den Standardfehler in dieselbe Datei wie die Standardausgabe zu senden, könnten Sie diesen Befehl verwenden:

 

dir > outfile 2>&1

 

Beachten Sie, dass Sie die gleichen Operationen mit den Standardumleitungsfunktionen durchführen können. Die beiden obigen Beispiele könnten wie folgt geschrieben werden

 

dir > outfile >&> errfile

 

und

 

dir >& outfile

 

"Hier-Dokument"-Umleitung

 

Überall dort, wo die Umleitung von Eingaben unterstützt wird, können Sie einen Linux-ähnlichen "Here-document"-Ansatz verwenden. Die Syntax ist:

 

program << word

 

Die aktuelle Stapeldatei wird bis zum nächsten Vorkommen von word gelesen, und der resultierende Text wird zur Standardeingabe für program. Ein Beispiel:

 

c:\test\program.exe << endinput

input 1

input 2

input 3

endinput

echo This is the next line after "program.exe"

 

Besonderheiten von "here document":

 

Wenn  auf << einBindestrich (-) folgt, wird das führende Leerzeichen in den folgenden Zeilen entfernt, bevor sie an das Programm übergeben werden (d.h. sie werden effektiv linksbündig ausgerichtet).

 

Der Parser führt  in jeder Zeile eineVariablenexpansiondurch , es sei denn, das auf << folgende Wort  ist in Anführungszeichen eingeschlossen.

 

"Hier-Zeichenfolge"-Umleitung

 

Mit "here-string" können Sie eine Zeichenkette direkt an die Eingabe eines Programms senden. Die Syntax lautet:

 

program <<< string

 

Dies ist ähnlich wie die Verwendung von KEYSTACK, aber einfacher für die Texteingabe. (Wenn Sie spezielle Tasten senden oder Wartezeiten einfügen müssen, müssen Sie KEYSTACK verwenden). Zum Beispiel, um eine Zeichenkette an die Standardeingabe von program zu senden:

 

c:\test\program.exe <<< This is some input text.