windows - 从 tasklist 命令获取 PID
问题描述
我正在使用任务列表为我提供有关在我的 Windows Server 上运行的特定服务/进程的信息。
命令:
tasklist /svc /fi "SERVICES eq .Service02"
输出:
Image Name PID Services
================== ======== ============================================
app02.exe 15668 .Service02
我现在在 StackOverflow、其他论坛以及 Windows Docs 上搜索了很长时间,但我无法弄清楚如何获得所需的输出,即:
15668
我设法做了一个有效的命令,但不是真的......
for /f "tokens=1,2 delims= " %A in ('tasklist /svc /fi "SERVICES eq .Service02"') do echo %B
这并没有给我想要的输出 - 相反,它给了我以下输出:
C:\Users\admin>echo Name
Name
C:\Users\admin>echo ========
========
C:\Users\admin>echo 15668
15668
如果我只能做一些只与第三行相呼应的事情。输出正是我需要的。PID。
所以,我需要一个命令,它会带上我提供的服务正在使用的进程的名称,并且只返回它的 PID。
请问,有人可以帮我吗?
编辑:感谢@Squashman,我设法执行了一个新命令:
tasklist /svc /fi "SERVICES eq .Service02" /FO csv /NH
"service02.exe","15668",".Service02"
现在输出是:
"service02.exe","15668",".Service02"
但我从这里去哪里?
解决方案
只需使用for /F
循环来捕获tasklist
命令的 CSV 输出并提取正确的标记。
在命令提示符中:
@for /F "tokens=2 delims=," %P in ('tasklist /SVC /FI "Services eq .Service02" /FO CSV /NH') do @echo %~P
在批处理文件中:
@echo off
for /F "tokens=2 delims=," %%P in ('
tasklist /SVC /FI "Services eq .Service02" /FO CSV /NH
') do echo %%~P
-~
修饰符从 PID 值中删除周围的引号。
推荐阅读
- bash - 对退出代码的抽象反应
- asp.net - “WriteLinesToFile”任务没有为所需参数“文件”指定值
- groovy - 如何在 groovy 脚本中将 UTC 时区转换为 CET 时区
- c - 为什么递归中的分段错误以找到函数的根?
- python - 使用 python selenium 访问网站时访问被拒绝
- list - 如何将字典中列表中的数字与另一个字典中的数字相乘
- java - 字符串列表到整数列表
- google-bigquery - 通过传输功能将数据从一个项目复制到 BQ 中的另一个项目是否需要成本?
- javascript - 用笑话模拟 setTimeout
- reactjs - 在 redux-toolkit 中处理相同功能的更正确方法是什么?