Laredirection peut être utilisée pour réaffecter lespériphériques d'entrée standard (stdin), de sortie standard (stdout), et d'erreur standard (stderr) de leurs paramètres par défaut (le clavier et l'écran) à un autre périphérique tel que NUL ou le port série, à un fichier ou au presse-papiers deWindows. Vous devez faire preuve de discernement lorsque vous utilisez la redirection avec un périphérique.
La redirection s'applique toujours à une commande spécifique et ne dure que le temps de cette commande. Lorsque la commande est terminée, les affectations de l'entrée standard, de la sortie standard et de l'erreur standard reviennent à ce qu'elles étaient avant la commande.
TCCLa sortie de 's est normalement en ANSI. Si vous souhaitez rediriger la sortie en Unicode, vous devez utiliser soit l'option de démarrage /U de la commande TCC ou l'optionUnicode Output dans TCMD.INI.
Dans les descriptions ci-dessous, filename signifie soit le nom d'un fichier, soit celui d'un périphérique approprié (CON pour le clavier et l'écran ; CLIP : (ou CLIP0 : - CLIP9 :) pour le presse-papiers ; NUL pour le périphérique "null", etc.)
Voici les options de redirection standard prises en charge par TCC (voir ci-dessous pour des options de redirection supplémentaires utilisant des poignées de fichiers numériques) :
Considérations particulières pour des commandes spécifiques
"Redirection par "Here-document
| < nom de fichier | Pour obtenir une entrée à partir d'un fichier ou d'un périphérique plutôt qu'à partir du clavier. |
écraser |
ajouter |
|
sortie standard |
> filename |
>> filename |
erreur standard |
>&> filename |
>>&> filename |
fusionner la sortie standard et l'erreur standard |
>& filename |
>>& filename |
Pour utiliser la redirection, placez le symbole de redirection et le nom du fichier à la fin de la ligne de commande, après le nom de la commande et les éventuels paramètres . Par exemple, pour rediriger la sortie de la commande DIR vers un fichier appelé DIRLIST, vous pouvez utiliser une ligne de commande comme celle-ci :
dir /b *.dat > dirlist
Vous pouvez utiliser n'importe quelle combinaison de redirection d'entrée et de sortie pour la même commande, en fonction de votre objectif. Par exemple, cette commande envoie l'entrée au programme externe SORT à partir du fichier DIRLIST, et envoie la sortie de SORT au fichier DIRLIST.SRT:
sort < dirlist > dirlist.srt
Vous pouvez rediriger du texte vers ou depuis le presse-papiers de Windows en utilisant le pseudo nom de périphérique CLIP : (les deux points sont obligatoires). La redirection vers le presse-papiers se fait toujours en utilisant l'Unicode UTF16.
Si vous redirigez la sortie d'une seule commande interne comme DIR, la redirection se termine automatiquement lorsque cette commande est terminée. Si vous démarrez un fichier batch avec une redirection, toute la sortie du fichier batch est redirigée, et la redirection se termine lorsque le fichier batch est terminé. De même, si vous utilisez la redirection après la parenthèse fermante d'un groupe de commandes (par exemple, ...) > rapport), toutes les données de sortie du groupe de commandes sont redirigées et la redirection se termine lorsque le groupe de commandes est terminé.
Vous pouvez modifier le format de la sortie redirigée. Ces options remplacent les directives UnicodeOutput et UTF8Output du fichier TCMD.INI. Remarque : ces options ne fonctionnent que pour rediriger la sortie des commandes internes et des fichiers batch de TCC.
| >:a | La sortie redirigée (STDOUT et/ou STDERR) est ANSI (caractères 8 bits) |
| >:u | La sortie redirigée est UTF16 Unicode |
| >:8 ou >:u8 | La sortie redirigée est UTF8 |
| >>:a | La sortie redirigée annexée (STDOUT et/ou STDERR) est ANSI (caractères de 8 bits) |
| >>:u | La sortie redirigée en annexe est UTF16 Unicode |
| >>:8 ou >>:u8 | La sortie redirigée en annexe est UTF8 |
Considérations particulières pour des commandes spécifiques
Vous ne pouvez pas rediriger toute la sortie de l'exécution d'une boucle DO en raison de la restriction selon laquelle la commande DO et son ENDDO correspondant ne peuvent pas faire partie d'un groupe de commandes.
Pour rediriger la sortie d'une commande TEXT, ajoutez la syntaxe de redirection à la commande TEXT.
Lorsque vous exécutez une commande FOR ou GLOBAL, la redirection est effectuée séparément pour chaque itération, en fonction du répertoire courant pour cette itération. Cela peut entraîner l'écrasement répété du fichier de sortie ou la création d'un fichier de sortie distinct dans chaque répertoire. Pour générer un seul fichier de sortie cumulatif, utilisez le regroupement de commandes, comme dans l'exemple ci-dessous :
( for /r %f in (*.btm) echo %@full[%f] ) > c:\temp\btmlst
Lorsque la sortie est dirigée vers un fichier avec >, >&, ou >&>, et que ce fichier existe déjà, il sera écrasé. Vous pouvez protéger les fichiers existants en utilisant la commande SETDOS /N1, le paramètre Protéger les fichiers de sortie redirigés dans l 'onglet Démarrage des boîtes de dialogue de configuration, ou l' option Protéger les fichiers de sortie redirigés.
Lorsque la sortie est ajoutée à un fichier avec >>, >>&, ou >>&>, le fichier sera créé s'il n'existe pas déjà. Cependant, si le mode NoClobber est défini comme décrit ci-dessus, la redirection de l'appendice ne créera pas de nouveau fichier ; au lieu de cela, si le fichier de sortie n'existe pas, un message d'erreur "File not found" ou une erreur similaire sera affiché.
Vous pouvez annuler temporairement le réglage actuel de NoClobber en utilisant un point d'exclamation [!] après le symbole de redirection. Par exemple, pour rediriger la sortie de DIR vers le fichier DIROUT, et autoriser l'écrasement de tout fichier existant malgré le paramètre NoClobber:
dir >! dirout
Les redirections sont entièrement emboîtables. Par exemple, vous pouvez invoquer un fichier batch et rediriger toute sa sortie vers un fichier ou un périphérique. La redirection de la sortie d'une commande dans le fichier batch ne prend effet que pour cette commande ; lorsque la commande est terminée, la sortie est redirigée vers le fichier ou le périphérique de sortie utilisé pour l'ensemble du fichier batch.
Vous pouvez utiliser la redirection pour créer un fichier vide (zéro octet). Pour ce faire, entrez >nom du fichier comme commande, sans commande réelle avant le caractère >. Si vous avez activé la fonction Protect redirected output file, utilisez >!filename.
En plus des options de redirection ci-dessus, TCC prend également en charge la syntaxeCMD:
| n>file | Redirection de la poignée n vers le fichier nommé |
| n>&m | Redirection de la poignéen au même endroit que la poignée m |
Attention : Vous ne pouvez pas mettre d'espace entre n et>, ni entre >, & et m dans la deuxième forme . Les valeurs de n et m doivent être des chiffres décimaux et représenter des handles de fichiers .Windows définit 0, 1 et 2 comme indiqué dans le tableau ci-dessous.
Poignée |
Affectation |
0 |
entrée standard |
1 |
sortie standard |
2 |
erreur standard |
La syntaxe n>file redirige la sortie de la poignée n vers le fichier. Vous pouvez utiliser cette forme pour rediriger deux handles vers des endroits différents. Par exemple :
dir > outfile 2> errfile
envoie la sortie normale vers un fichier appelé OUTFILE et tous les messages d'erreur vers un fichier appelé ERRFILE.
La syntaxe n>&m redirige la poignée n vers la même destination que la poignée m précédemment assignée . Par exemple, pour envoyer l'erreur standard dans le même fichier que la sortie standard, vous pouvez utiliser cette commande:
dir > outfile 2>&1
Notez que vous pouvez effectuer les mêmes opérations en utilisant les fonctions de redirection standard. Les deux exemples ci-dessus pourraient être écrits sous la forme
dir > outfile >&> errfile
et
dir >& outfile
Partout où la redirection d'entrée est prise en charge, vous pouvez utiliser une approche "ici-document" semblable à celle de Linux. La syntaxe est la suivante :
program << word
Le fichier batch actuel est lu jusqu'à la prochaine occurrence du mot, et le texte résultant devient l'entrée standard du programme. Le texte résultant devient l'entrée standard du programme :
c:\test\program.exe << endinput
input 1
input 2
input 3
endinput
echo This is the next line after "program.exe"
Caractéristiques particulières de "here document" :
•Si le << est suivi d'untrait d'union (-), l'espace blanc en tête des lignes suivantes sera supprimé avant de les transmettre au programme (c'est-à-dire qu'elles seront effectivement justifiées à gauche).
•L'analyseur syntaxique procède à l'expansion des variables sur chaque ligne, sauf si le mot qui suit << est entre guillemets.
La fonction "here-string" vous permet d'envoyer une chaîne de texte directement à l'entrée d'un programme. La syntaxe est la suivante :
program <<< string
Cette méthode est similaire à l'utilisation de KEYSTACK, mais elle est plus facile à utiliser pour la saisie de texte. (Si vous devez envoyer des touches spéciales ou insérer des attentes, vous devrez utiliser KEYSTACK). Par exemple, pour envoyer une chaîne de caractères à l'entrée standard du programme :
c:\test\program.exe <<< This is some input text.