Redirection et tuyau
Le COMMAND2.COM offre les fonctionnalités de redirection et de canalisation décrites ci-dessous. Ils peuvent être ignorés en réglant l'élément d'environnement "REDIR" sur "OFF" ("SET REDIR=OFF"), de sorte que la compatibilité avec MSX-DOS 1 ou CP/M peut être obtenue.
Redirection
La plupart des commandes, des programmes CP/M et des programmes MSX-DOS génèrent du texte à l'écran en écrivant sur la «sortie standard», et lisent à partir du clavier en lisant sur «l'entrée standard». COMMAND2.COM, cependant, fournit des fonctionnalités pour modifier l'entrée standard et la sortie standard pendant la durée de la commande pour faire référence aux périphériques MSX-DOS ou aux fichiers sur le disque en incluant un ou plusieurs des symboles de redirection <, > et >> sur la ligne de commande, suivi d'un nom de fichier.
Par exemple, la commande ECHO sort normalement ses paramètres à l'écran en écrivant les caractères sur la sortie standard. Il peut être fait pour sortir vers l'imprimante à la place en redirigeant sa sortie, comme suit :
ECHO text >PRN |
modifiant la sortie standard pour se référer au périphérique PRN pendant la durée de la commande ECHO. De même, la commande :
ECHO text >file1 |
entraînera la création du fichier spécifié ("file1") et la sortie de la commande ECHO écrite dans le fichier. Pour ajouter la sortie d'une commande à la fin d'un fichier existant, le symbole >> peut être utilisé à la place du symbole >, et le fichier ne sera créé que s'il n'existe pas déjà.
Pour modifier l'entrée standard, le symbole < est utilisé de la même manière que le symbole >. Dans ce cas, le fichier doit déjà exister et doit contenir une entrée adéquate pour la commande. Si la commande tente de lire l'entrée au-delà de la fin du fichier, elle sera abandonnée car elle ne peut pas continuer.
Lorsque des informations de redirection sont fournies sur la ligne de commande, elles sont utilisées par COMMAND2.COM pour configurer la redirection, puis supprimées de la ligne de commande. Ainsi, dans les exemples ci-dessus, la commande ECHO ne fera pas écho aux symboles de direction ou au nom de fichier.
Si l'entrée ou la sortie d'un fichier de commandes est redirigée, cette redirection est appliquée à toutes les commandes du fichier de commandes. Cependant, les commandes individuelles du fichier de commandes peuvent toujours être redirigées, ce qui annulera la redirection du fichier de commandes.
Tuyau
En plus de rediriger l'entrée et la sortie d'une commande ou d'un programme vers un autre périphérique ou un fichier disque, il est possible de rediriger ou de "canaliser" la sortie standard d'une commande vers l'entrée standard d'une autre. Généralement, la deuxième commande sera un programme lisant à partir de son entrée standard, modifie les données et les écrit sur sa sortie standard. Un tel programme est appelé un "filtre". Par exemple, un filtre pourrait être produit qui lirait les données de son entrée standard, les trierait par ordre alphabétique et les écrirait sur sa sortie standard. Ainsi, la sortie de la commande DIR pourrait être triée.
La tuyauterie est indiquée sur la ligne de commande en séparant les deux commandes par le | symbole. La commande à gauche du | symbole sera exécuté en premier, et sa sortie sera redirigée vers un fichier temporaire créé par COMMAND2.COM. Ensuite, la deuxième commande sera exécutée, avec son entrée standard redirigée depuis le même fichier temporaire. Lorsque la deuxième commande se termine, le fichier temporaire sera supprimé. La sortie standard de la deuxième commande peut bien sûr avoir été redirigée vers l'entrée standard d'une troisième commande, et ainsi de suite.
Si une redirection d'entrée se produit sur une ligne de commande impliquant un tube, la redirection est appliquée à la première commande du tube, car toutes les autres commandes reçoivent leur entrée standard à partir de la sortie standard de la commande précédente dans le tube. De même, si une redirection de sortie se produit sur une ligne de commande impliquant un tube, la redirection s'appliquera à la dernière commande sur la ligne de commande.
Il n'est pas possible d'utiliser des tuyaux sur l'entrée des fichiers de traitement par lots directement. Il est cependant possible d'utiliser le tuyau avec des fichiers de traitement par lots s'ils sont exécutés avec la commande COMMAND2 puisque c'est alors la commande COMMAND2 étant redirigée et non le fichier de traitement par lots.
Comme mentionné ci-dessus, afin de diriger la sortie d'une commande vers l'entrée d'une autre, des fichiers temporaires seront créés et supprimés par COMMAND2.COM. L'emplacement de ces fichiers temporaires est spécifié par l'élément d'environnement TEMP, et cela peut être modifié pour faire référence à n'importe quel unité de disque et répertoire (par exemple, la canalisation sera considérablement accélérée si TEMP fait référence à un répertoire sur un disque RAM). Par défaut, TEMP fait référence au répertoire racine du disque de démarrage. Le nom de fichier utilisé pour le fichier temporaire est créé par COMMAND.COM, donc TEMP doit spécifier uniquement l'unité de disque et le répertoire. Le nom du fichier est dans le format :
%PIPExxx.$$$ |
où xxx est un nombre à trois chiffres choisi par COMMAND2.COM pour éviter les conflits avec d'autres fichiers du répertoire TEMP.