ps aux | grep foo 在 Windows 中等效,而不截断结果中的命令

问题描述 投票:0回答:1

我目前正在将一些 shell 文件转换为 python,以便向 Windows 添加相同的功能。 我仅限于使用 python 和批处理命令,而不是 powershell,因为这是仅使用这两个命令的更大程序的一部分。

所以我正在寻找相当于 bash 命令的批处理

ps aux | grep foo | grep -v grep

我已经尝试过

tasklist /v | findstr foo
.

这似乎可行,但打印此内容的原因是为了查看当前正在运行的所有进程,并且任务列表命令会在几个参数后截断命令。

例如。如果 ps aux | 的操作grep foo | grep -v grep 如下:

root 1599162  0.0  0.0   9040  2500 pts/20   <doesnt matter>   03:47   0:00 foo <param1> <param2> <param3> .... 
**
<last param passed to foo>
**

任务列表 /v | findstr foo 在 Windows 中给出以下输出:

foo.exe                  7624 RDP-Tcp#1                  2     10,852 K Unknown         <user loginID>                          0:00:00 foo.exe <param1> <param2> <param3>

(第三个或第四个参数直到最后一个都不会打印。这些是区分运行命令所需的重要参数)。

#1 我们如何获取当前正在运行的完整的未截断的命令? 另外 #2 任务列表是否列出在不同命令提示符下运行的进程。

python python-3.x windows batch-file
1个回答
0
投票

按照 Robert 对 wmi 的评论,探索了 wmic 和 python wmi 模块。 尽管已弃用,但 wmic 对我有用,我发现它非常适合替换

ps aux | grep foo | grep -v grep

。 将上面的命令替换为以下命令:

"C:\Windows\System32\wbem\WMIC.exe" process get Name,ProcessId,CommandLine,CreationDate /FORMAT:TABLE | C:\Windows\System32\findstr "foo CommandLine" | C:\Windows\System32\findstr /V "wmic findstr cmd.exe python" 

最后一个 findtsr /V 被添加,因为还显示了其他要被消除的结果。 结果类似于以下内容:

CommandLine                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           CreationDate               Name                         ProcessId
foo <params-list>                                                                                                                                                                                                                                                                                                                                                                             20240215010001.243056-480  foo.exe                   4972
foo <params-list>                                                                                                                                                                                                                                                                                                                                                                             20240215010004.237062-480  foo.exe                   7424
foo <params-list>                                                                                                                                                                                                                                                                                                                                                                             20240215010007.237142-480  foo.exe                   7084
foo <params-list>                                                                                                                                                                                                                                                                                                                                                                             20240215010010.237401-480  foo.exe                   9016

虽然间距比我想要的有点小,但命令行后面有很多额外的空格

© www.soinside.com 2019 - 2024. All rights reserved.