Script par lots - Fichiers Pipes

L'opérateur de tube (|) prend la sortie (par défaut, STDOUT) d'une commande et la dirige vers l'entrée (par défaut, STDIN) d'une autre commande. Par exemple, la commande suivante trie le contenu du répertoire C: \

dir C:\ | sort

Dans cet exemple, les deux commandes démarrent simultanément, mais la commande sort s'interrompt jusqu'à ce qu'elle reçoive la sortie de la commande dir. La commande sort utilise la sortie de la commande dir comme entrée, puis envoie sa sortie au handle 1 (c'est-à-dire STDOUT).

Voici un autre exemple de la commande pipe. Dans cet exemple, le contenu du fichier C: \ new.txt est envoyé à la commande sort via le filtre de canal.

@echo off 
TYPE C:\new.txt | sort

Combinaison de commandes avec des opérateurs de redirection

Habituellement, l'opérateur de tube est utilisé avec l'opérateur de redirection pour fournir des fonctionnalités utiles lorsqu'il s'agit de travailler avec des commandes de tube.

Par exemple, la commande ci-dessous prendra d'abord tous les fichiers définis dans C: \, puis en utilisant la commande pipe, trouvera tous les fichiers avec l'extension .txt. Il prendra ensuite cette sortie et l'imprimera dans le fichier AllText.txt.

dir C:\ | find "txt" > AllText.txt

Utilisation de plusieurs commandes de canalisation

Pour utiliser plusieurs filtres dans la même commande, séparez les filtres par un tube (|). Par exemple, la commande suivante recherche chaque répertoire sur le lecteur C :, trouve les noms de fichiers qui incluent la chaîne «Journal», puis les affiche dans une fenêtre d'invite de commandes à la fois -

dir c:\ /s /b | find "TXT" | more

Voici quelques exemples d'utilisation du filtre de tuyau.

Exemples

L'exemple suivant envoie la liste de toutes les tâches en cours à l'aide de la commande tasklist et envoie la sortie à la commande find. La commande find trouvera alors tous les processus qui sont du type notepad et les affichera dans l'invite de commande.

tasklist | find "notepad"

Production

Voici un exemple de sortie.

notepad.exe               1400 Console            1      8,916 K
notepad.exe               4016 Console            1      11,200 K
notepad.exe               1508 Console            1      8,720 K
notepad.exe               4076 Console            1      8,688 K

L'exemple suivant envoie la liste de toutes les tâches en cours à l'aide de la commande tasklist et envoie la sortie à la commande more. La commande more affichera alors les listes de tâches en cours une page à la fois.

Exemple

tasklist | more

Production

Image Name                PID Session Name  Session#     Mem Usage
======================    ================  ===========  ============
System Idle Process           0 Services        0             4 K
System                        4 Services        0           276 K
smss.exe                    344 Services        0         1,060 K
csrss.exe                   524 Services        0         4,188 K
csrss.exe                   608 Console         1        58,080 K
wininit.exe                 616 Services        0         3,528 K
winlogon.exe                644 Console         1         5,636 K
services.exe                708 Services        0         7,072 K
lsass.exe                   716 Services        0        10,228 K
svchost.exe                 784 Services        0        10,208 K
svchost.exe                 828 Services        0         7,872 K
dwm.exe                     912 Console         1       208,316 K
nvvsvc.exe                  932 Services        0         6,772 K
nvxdsync.exe                968 Console         1        16,584 K
nvvsvc.exe                  976 Console         1        12,780 K
svchost.exe                1008 Services        0        20,340 K
svchost.exe                 224 Services        0        39,740 K
svchost.exe                 468 Services        0        11,864 K
svchost.exe                 860 Services        0        11,184 K
svchost.exe                 232 Services        0        16,992 K
wlanext.exe                1168 Services        0        12,840 K
-- More --

L'exemple suivant envoie la liste de toutes les tâches en cours à l'aide de la commande tasklist et envoie la sortie à la commande find. La commande find trouvera alors tous les processus de type notepad et utilisera ensuite la commande de redirection pour envoyer le contenu dans le fichier tasklist.txt.

Exemple

tasklist | find "notepad" > tasklist.txt

Production

Si vous ouvrez le fichier tasklist.txt, vous obtiendrez l'exemple de sortie suivant.

notepad.exe            1400 Console            1      8,916 K
notepad.exe            4016 Console            1      11,200 K
notepad.exe            1508 Console            1      8,720 K
notepad.exe            4076 Console            1      8,688 K