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