Script por lotes: canalizaciones de archivos

El operador de tubería (|) toma la salida (por defecto, STDOUT) de un comando y la dirige a la entrada (por defecto, STDIN) de otro comando. Por ejemplo, el siguiente comando ordena el contenido del directorio C: \

dir C:\ | sort

En este ejemplo, ambos comandos se inician simultáneamente, pero luego el comando sort se detiene hasta que recibe la salida del comando dir. El comando sort usa la salida del comando dir como entrada y luego envía su salida al controlador 1 (es decir, STDOUT).

A continuación se muestra otro ejemplo del comando de tubería. En este ejemplo, el contenido del archivo C: \ new.txt se envía al comando sort a través del filtro de tubería.

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

Combinando comandos con operadores de redirección

Por lo general, el operador de tubería se utiliza junto con el operador de redirección para proporcionar una funcionalidad útil cuando se trata de trabajar con comandos de tubería.

Por ejemplo, el siguiente comando tomará primero todos los archivos definidos en C: \, luego, usando el comando pipe, encontrará todos los archivos con la extensión .txt. Luego tomará esta salida y la imprimirá en el archivo AllText.txt.

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

Uso de varios comandos de tubería

Para usar más de un filtro en el mismo comando, separe los filtros con una barra vertical (|). Por ejemplo, el siguiente comando busca en todos los directorios de la unidad C :, busca los nombres de archivo que incluyen la cadena "Registro" y luego los muestra en una ventana del símbolo del sistema a la vez:

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

A continuación se muestran algunos ejemplos de cómo se puede utilizar el filtro de tubería.

Ejemplos

El siguiente ejemplo envía la lista de todas las tareas en ejecución utilizando el comando tasklist y envía la salida al comando find. El comando buscar encontrará todos los procesos que son del tipo bloc de notas y los mostrará en el símbolo del sistema.

tasklist | find "notepad"

Salida

A continuación se muestra una salida de muestra.

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

El siguiente ejemplo envía la lista de todas las tareas en ejecución utilizando el comando tasklist y envía la salida al comando more. El comando more mostrará las listas de tareas en ejecución una página a la vez.

Ejemplo

tasklist | more

Salida

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

El siguiente ejemplo envía la lista de todas las tareas en ejecución utilizando el comando tasklist y envía la salida al comando find. El comando de búsqueda encontrará todos los procesos que son del tipo bloc de notas y luego usará el comando de redirección para enviar el contenido al archivo tasklist.txt.

Ejemplo

tasklist | find "notepad" > tasklist.txt

Salida

Si abre el archivo tasklist.txt, obtendrá el siguiente resultado de muestra.

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