Tuyauterie est une forme spéciale de redirection, utilisant une instance supplémentaire de TCC pour chaque instance du tuyauterie spécifié dans la ligne de commande.

 

Vous pouvez créer un pipe envoyer le sortie standard d'une commande (command1) au entrée standard d'une autre commande (command2), et éventuellement envoyer également le erreur standard ainsi que:

 

ce qui est envoyé au tuyau

format de commande

sortie standard uniquement

command1 | command2

fusionner la sortie standard et l'erreur standard

command1 |& command2

erreur standard uniquement

commande1 |&| commande2

 

Par exemple, pour prendre la sortie du ALIAS (qui affiche une liste de vos alias et de leurs valeurs) et la dirigez vers l'utilitaire externe SORT pour générer une liste triée, vous utiliseriez la commande :

 

pseudonyme | trier

 

Pour faire la même chose, puis rediriger la liste triée vers le serveur interne VOIR commande pour visualiser :

 

pseudonyme | trier | vue /s

 

Le TEE et Y les commandes sont des "raccords de tuyauterie" qui ajoutent plus de flexibilité aux tuyaux.

 

TCCLa sortie de est normalement en ANSI. Si vous souhaitez rediriger la sortie en Unicode, vous devez soit utiliser le Option de démarrage /U in TCCou de la Sortie Unicode option dans TCMD.INI.

 

Comme pour la redirection, les tuyaux sont entièrement emboîtables. Par exemple, vous pouvez appeler un fichier batch et envoyer toute sa sortie à une autre commande avec un tube. Un canal sur une commande dans le fichier batch ne prendra effet que pour cette commande ; lorsque la commande est terminée, la sortie reviendra au canal utilisé pour le fichier batch dans son ensemble. Vous pouvez également avoir 2 tuyaux ou plus fonctionnant simultanément si, par exemple, les tuyaux s'exécutent dans différentes fenêtres ou processus.

 

Traitement de chaque ligne reçue d'un pipeline

 

Pour traiter chaque ligne de texte envoyée par le côté gauche d'un tube dans TCC, vous pouvez utiliser la syntaxe ci-dessous :

 

rép | pour %file dans (@CON:) commande %file

 

Cet exemple montre comment transmettre chaque ligne de données redirigées vers un commander.

 

AVERTISSEMENTS: TCC implémente les tuyaux en démarrant un nouveau processus pour le programme de réception. Ce processus passe par la procédure standard de démarrage du shell, y compris l'exécution du TCSTART fichier, pour CHAQUE programme de réception. Tous les programmes d'envoi et de réception s'exécutent simultanément ; le programme d'envoi écrit dans le tube et le programme de réception lit dans le tube. Lorsque le programme de réception trouve un signal de fin de fichier, il termine la lecture et le traitement des données transmises, puis se termine. Lorsque vous utilisez des tuyaux avec TCC, assurez-vous de considérer les conséquences possibles de l'utilisation d'un processus distinct pour exécuter le programme de réception, en particulier le fait qu'il ne peut pas créer/modifier/supprimer les variables d'environnement du programme d'envoi et l'inclusion d'une commande pour changer de répertoire dans le TCSTART le fichier peut entraîner l'exécution du nouveau processus dans un répertoire différent. Lorsque vous utilisez plusieurs canaux dans une seule commande, par ex. le deuxième exemple ci-dessus avec LISTE, chaque canal ajoute une autre instance de TCC. Si vous devez exécuter le pipe dans le même contexte, utilisez des pipes in-process (voir ci-dessous).

 

Tuyaux en cours de processus

 

Les tuyaux en cours fonctionnent comme les tuyaux DOS à l'ancienne, en créant un fichier de sortie temporaire, en redirigeant STDOUT vers ce fichier, puis en redirigeant le fichier temporaire vers STDIN de la commande suivante. La syntaxe est :

 

commande1 |! commande2

 

C'est la même chose que de faire :

 

commande1 > temp.dat & commande2 < temp.dat

 

mais il est plus facile à taper et à lire.

 

L'avantage des conduites en cours de processus est que command2 sera exécuté dans le même contexte que command1, vous pouvez donc faire des choses comme modifier les variables d'environnement sans les supprimer lorsque command2 sorties. Il y a aussi quelques inconvénients à utiliser ce type de « pseudo-pipe » : il sera généralement plus lent qu'un vrai tube ; il utilisera de l'espace disque pour son fichier temporaire ; et command2 ne démarrera pas avant command1 a sorti.

 

Sortie ANSI, Unicode et UTF-8

 

Vous pouvez modifier le format de sortie envoyé à un canal. Ces options remplaceront les directives UnicodeOutput et UTF8Output dans TCMD.INI. Les options de sortie canalisée fonctionnent également avec les canaux en cours de processus (c'est-à-dire |!:u). Remarque : ces options ne fonctionnent que pour rediriger la sortie de TCC commandes internes et fichiers batch.

 

|:uneLa sortie canalisée est ANSI
|:tuLa sortie canalisée est UTF16 Unicode
|:8 ou |:u8La sortie canalisée est UTF8