批处理脚本 - 文件管道
管道运算符 (|) 获取一个命令的输出(默认情况下为 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