Piping ist eine spezielle Form der Umleitung, bei der eine zusätzliche Instanz von TCC für jede Instanz der  in der Befehlszeile angegebenen Pipe.

 

Sie können eine Pipe erstellen , um die Standardausgabe eines Befehls (Befehl1) an dieStandardeingabe eines anderen Befehls (Befehl2) zu senden  und optional auch den Standardfehler mitzusenden :

 

was an die Pipe gesendet wird

Befehlsformat

nur Standardausgabe

Befehl1 | Befehl2

Standard-Ausgabe und Standard-Fehler zusammenführen

befehl1 |& befehl2

nur Standardfehler

befehl1 |&| befehl2

 

Um beispielsweise die Ausgabe des  Befehls ALIAS (der eine Liste Ihrer Aliase und deren Werte anzeigt) über die Pipeline an das externe Dienstprogramm SORT weiterzuleiten, um eine sortierte Liste zu erstellen, würden Sie den folgenden Befehl verwenden:

 

alias | sort

 

Um dasselbe zu tun und die sortierte Liste dann über die Pipeline an den internen  VIEW-Befehl zur Anzeige weiterzuleiten

 

alias | sort | view /s

 

Die  Befehle TEE und Y sind "pipe fittings", die den Pipes mehr Flexibilität verleihen.

 

TCCDie Ausgabe von TEE erfolgt normalerweise in ANSI. Wenn Sie die Ausgabe in Unicode umleiten wollen, müssen Sie entweder die Startoption /U in TCCoder die Option Unicode Output in TCMD.INI verwenden.

 

Wie die Umleitung sind auch Pipes vollständig verschachtelbar. Sie können z. B. eine Batch-Datei aufrufen und alle ihre Ausgaben über eine Pipe an einen anderen Befehl senden. Eine Pipe für einen Befehl innerhalb der Stapeldatei wird nur für diesen Befehl wirksam; wenn der Befehl beendet ist, kehrt die Ausgabe in die Pipe zurück, die für die gesamte Stapeldatei verwendet wird. Sie können auch 2 oder mehr Pipes gleichzeitig verwenden, wenn die Pipes zum Beispiel in verschiedenen Fenstern oder Prozessen laufen.

 

Verarbeitung jeder von einer Pipe empfangenen Zeile

 

Um jede Textzeile zu verarbeiten, die von der linken Seite einer Pipe in TCCgesendet wird, können Sie die folgende Syntax verwenden:

 

dir | for %file in (@CON:) command %file

 

Dieses Beispiel zeigt, wie Sie jede Zeile der über eine Pipe gesendeten Daten an einen Befehl weitergeben können.

 

WARNUNGEN: TCC implementiert Pipes, indem es einen neuen Prozess für das empfangende Programm startet. Dieser Prozess durch läuft die Standard-Shell-Startprozedur, einschließlich der Ausführung der TCSTART-Datei, für JEDES Empfangsprogramm. Alle Sende- und Empfangsprogramme laufen gleichzeitig; das Sendeprogramm schreibt in die Pipe und das Empfangsprogramm liest aus der Pipe. Wenn das Empfangsprogramm ein Dateiende-Signal feststellt, beendet es das Lesen und Verarbeiten der über die Pipe übertragenen Daten und bricht ab. Wenn Sie Pipes mit TCCverwenden, sollten Sie die möglichen Konsequenzen bedenken, die sich aus der Verwendung eines separaten Prozesses zur Ausführung des Empfangsprogramms ergeben, insbesondere, dass dieser keine Umgebungsvariablen des Sendeprogramms erstellen/ändern/löschen kann und dass die Aufnahme eines Befehls zum Wechseln von Verzeichnissen in die TCSTART-Datei dazu führen kann, dass der neue Prozess in einem anderen Verzeichnis ausgeführt wird.  Wenn Sie mehr als eine Pipe in einem einzigen Befehl verwenden, z.B. im zweiten Beispiel oben mit LIST, fügt jede Pipe eine weitere Instanz von TCC. Wenn Sie die Pipe im gleichen Kontext ausführen müssen, verwenden Sie prozessinterne Pipes (siehe unten).

 

In-Prozess-Pipes

 

Prozessinterne Pipes funktionieren wie die alten DOS-Pipes, indem sie eine temporäre Ausgabedatei erstellen, STDOUT auf diese Datei umleiten und dann die temporäre Datei auf STDIN des folgenden Befehls umleiten. Die Syntax lautet:

 

Befehl1 |! Befehl2

 

Dies ist dasselbe wie:

 

Befehl1 > temp.dat & Befehl2 < temp.dat

 

aber es ist einfacher zu tippen und zu lesen.

 

Der Vorteil von prozessinternen Pipes ist, dass Befehl2 im gleichen Kontext wie Befehl1 ausgeführt wird , so dass Sie Dinge wie die Änderung von Umgebungsvariablen vornehmen können, ohne dass diese verworfen werden, wenn Befehl2 beendet wird. Es gibt auch einige Nachteile bei der Verwendung dieser Art von "Pseudo-Pipe" - sie ist in der Regel langsamer als eine echte Pipe; sie verbraucht etwas Plattenplatz für ihre temporäre Datei; und Befehl2 wird nicht gestartet, bevor Befehl1 beendet ist.

 

ANSI-, Unicode- und UTF-8-Ausgabe

 

Sie können das Format der an eine Pipe gesendeten Ausgabe ändern. Diese Optionen setzen die Direktiven UnicodeOutput und UTF8Output in TCMD.INI außer Kraft. Die Optionen für die Ausgabe über eine Pipe funktionieren auch mit prozessinternen Pipes (d. h. |!:u). Hinweis: Diese Optionen funktionieren nur für die Umleitung der Ausgabe von TCC internen Befehlen und Batch-Dateien.

 

|:aGepipte Ausgabe ist ANSI
|:uGeleitete Ausgabe ist UTF16 Unicode
|:8 oder |:u8Gepipte Ausgabe ist UTF8