繁体   English   中英

如何从Windows命令行上的tasklist输出中提取特定字段

[英]How to extract a specific field from output of tasklist on the windows command line

我在Windows命令提示符下运行以下命令

C:>tasklist /fi "Imagename eq BitTorrent.exe"

其输出是

Image Name            PID      Session Name       Session #    Mem Usage
==================  ======== =================   ===========   =========
BitTorrent.exe        6164      Console                   3     24,144K

我只需要从上面的输出中提取一个字段PID,即数字6164。

我该如何实现这一目标? 更一般地说,如何从Windows命令行上的命令输出中提取字段的子集(1个/更多)?

类似于以前的答案,但使用特定的交换机在tasklist跳过头和正确的行为,不论在空间形象的名字:

for /f "tokens=2 delims=," %F in ('tasklist /nh /fi "imagename eq BitTorrent.exe" /fo csv') do @echo %~F

(直接从cmd行运行,如果从批量替换%F%%F

最简单的方法是使用WMIC:

c:\>wmic process where caption="BitTorrent.exe" get  ProcessId

编辑:由于WMIC不是Windows 家庭版的一部分:

for /f "tokens=1,2 delims= " %A in ('tasklist /fi ^"Imagename eq cmd.exe^" ^| find ^"cmd^"') do echo %B

这里使用了标题的CMD。您可以在find和tasklist参数中更改它。 如果在批处理文件中使用它,则需要%%B%%A

您可以使用wmic命令来过滤输出:

wmic process where name="BitTorrent.exe" get processid | MORE +1

更新:另一种方式:

@Echo OFF
FOR /F "tokens=2" %%# in ('tasklist /fi "Imagename eq winamp.exe" ^| MORE +3') do (Echo %%#)
Pause&Exit

PS:请记住,如果应用程序文件名包含空格,则需要设置权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM