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