Batch Script - Files Pipes

O operador de pipe (|) pega a saída (por padrão, STDOUT) de um comando e a direciona para a entrada (por padrão, STDIN) de outro comando. Por exemplo, o comando a seguir classifica o conteúdo do diretório C: \

dir C:\ | sort

Neste exemplo, os dois comandos iniciam simultaneamente, mas o comando sort faz uma pausa até receber a saída do comando dir. O comando sort usa a saída do comando dir como sua entrada e, em seguida, envia sua saída para manipular 1 (isto é, STDOUT).

A seguir está outro exemplo do comando pipe. Neste exemplo, o conteúdo do arquivo C: \ new.txt é enviado ao comando sort por meio do filtro de tubo.

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

Combinando Comandos com Operadores de Redirecionamento

Normalmente, o operador de tubo é usado junto com o operador de redirecionamento para fornecer funcionalidade útil quando se trata de trabalhar com comandos de tubo.

Por exemplo, o comando a seguir primeiro pegará todos os arquivos definidos em C: \ e, em seguida, usando o comando pipe, encontrará todos os arquivos com a extensão .txt. Em seguida, ele pegará essa saída e a imprimirá no arquivo AllText.txt.

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

Usando vários comandos de tubo

Para usar mais de um filtro no mesmo comando, separe os filtros com um tubo (|). Por exemplo, o comando a seguir pesquisa todos os diretórios na unidade C :, encontra os nomes de arquivo que incluem a string "Log" e os exibe em uma janela do prompt de comando por vez -

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

A seguir estão alguns exemplos de como o filtro de tubo pode ser usado.

Exemplos

O exemplo a seguir envia a lista de todas as tarefas em execução usando o comando tasklist e envia a saída para o comando find. O comando find encontrará então todos os processos que são do tipo notepad e os exibirá no prompt de comando.

tasklist | find "notepad"

Resultado

A seguir está um exemplo de saída.

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

O exemplo a seguir envia a lista de todas as tarefas em execução usando o comando tasklist e envia a saída para o comando more. O comando more exibirá as listas de tarefas em execução, uma página por vez.

Exemplo

tasklist | more

Resultado

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 --

O exemplo a seguir envia a lista de todas as tarefas em execução usando o comando tasklist e envia a saída para o comando find. O comando find irá então encontrar todos os processos que são do tipo notepad e então usar o comando de redirecionamento para enviar o conteúdo para o arquivo tasklist.txt.

Exemplo

tasklist | find "notepad" > tasklist.txt

Resultado

Se você abrir o arquivo tasklist.txt, obterá o seguinte exemplo de saída.

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