Script batch - Tubi di file

L'operatore pipe (|) prende l'output (per impostazione predefinita, STDOUT) di un comando e lo indirizza nell'input (per impostazione predefinita, STDIN) di un altro comando. Ad esempio, il seguente comando ordina il contenuto della directory C: \

dir C:\ | sort

In questo esempio, entrambi i comandi vengono avviati contemporaneamente, ma il comando di ordinamento viene sospeso finché non riceve l'output del comando dir. Il comando sort utilizza l'output del comando dir come input, quindi invia il suo output all'handle 1 (ovvero, STDOUT).

Di seguito è riportato un altro esempio del comando pipe. In questo esempio, il contenuto del file C: \ new.txt viene inviato al comando di ordinamento tramite il filtro pipe.

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

Combinazione di comandi con operatori di reindirizzamento

Di solito, l'operatore pipe viene utilizzato insieme all'operatore di reindirizzamento per fornire funzionalità utili quando si tratta di lavorare con i comandi pipe.

Ad esempio, il comando seguente prenderà prima tutti i file definiti in C: \, quindi utilizzando il comando pipe, troverà tutti i file con l'estensione .txt. Quindi prenderà questo output e lo stamperà nel file AllText.txt.

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

Utilizzo di più comandi pipe

Per utilizzare più di un filtro nello stesso comando, separare i filtri con una barra verticale (|). Ad esempio, il comando seguente cerca in tutte le directory sull'unità C: trova i nomi dei file che includono la stringa "Log", quindi li visualizza in una finestra del prompt dei comandi alla volta -

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

Di seguito sono riportati alcuni esempi di come può essere utilizzato il filtro per tubi.

Esempi

Il seguente esempio invia l'elenco di tutte le attività in esecuzione utilizzando il comando tasklist e invia l'output al comando find. Il comando find troverà quindi tutti i processi che sono del tipo blocco note e li visualizzerà nel prompt dei comandi.

tasklist | find "notepad"

Produzione

Di seguito è riportato un output di esempio.

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

Il seguente esempio invia l'elenco di tutte le attività in esecuzione utilizzando il comando tasklist e invia l'output al comando more. Il comando more visualizzerà quindi gli elenchi delle attività in esecuzione una pagina alla volta.

Esempio

tasklist | more

Produzione

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

Il seguente esempio invia l'elenco di tutte le attività in esecuzione utilizzando il comando tasklist e invia l'output al comando find. Il comando find troverà quindi tutti i processi che sono del tipo blocco note e quindi utilizza il comando di reindirizzamento per inviare il contenuto al file tasklist.txt.

Esempio

tasklist | find "notepad" > tasklist.txt

Produzione

Se apri il file tasklist.txt, otterrai il seguente output di esempio.

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