批处理脚本 - 文件管道

管道运算符 (|) 获取一个命令的输出(默认情况下为 STDOUT)并将其定向到另一命令的输入(默认情况下为 STDIN)。 例如,以下命令对目录 C:\

的内容进行排序
dir C:\ | sort

在此示例中,两个命令同时启动,但随后 sort 命令会暂停,直到收到 dir 命令的输出。 sort 命令使用 dir 命令的输出作为其输入,然后将其输出发送到句柄 1(即 STDOUT)。

下面是管道命令的另一个示例。 在此示例中,文件 C:\new.txt 的内容通过管道过滤器发送到排序命令。

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

将命令与重定向运算符组合

通常,管道运算符与重定向运算符一起使用,以在使用管道命令时提供有用的功能。

例如,以下命令将首先获取 C:\ 中定义的所有文件,然后使用管道命令查找所有扩展名为 .txt 的文件。 然后它将获取此输出并将其打印到文件 AllText.txt。

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

使用多个管道命令

要在同一命令中使用多个过滤器,请用竖线 (|) 分隔过滤器。 例如,以下命令搜索驱动器 C: 上的每个目录,查找包含字符串"Log"的文件名,然后一次将它们显示在一个命令提示符窗口中 −

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

以下是如何使用管道过滤器的一些示例。

示例

以下示例使用tasklist命令发送所有正在运行的任务的列表,并将输出发送到find命令。 find 命令将找到所有记事本类型的进程,并将它们显示在命令提示符中。

tasklist | find "notepad"

输出

以下是示例输出。

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

以下示例使用tasklist命令发送所有正在运行的任务的列表,并将输出发送到more命令。 然后,more 命令将一次一页地显示正在运行的任务列表。

示例

tasklist | more

输出

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

以下示例使用tasklist命令发送所有正在运行的任务的列表,并将输出发送到find命令。 然后find命令将查找所有notepad类型的进程,然后使用重定向命令将内容发送到文件tasklist.txt。

示例

tasklist | find "notepad" > tasklist.txt

输出

如果打开文件tasklist.txt,您将获得以下示例输出。

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

❮ batch_script_functions.html