首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何记录TaskList的计数

如何记录TaskList的计数
EN

Stack Overflow用户
提问于 2018-11-02 08:57:52
回答 2查看 1.5K关注 0票数 0

我有一个叫做"Ulti.exe“的过程。由于我的项目需求,我有一个以上的副本,它在任何时候运行。如果"Ulti.exe“的拷贝数降到3以下,我需要关闭所有进程并重新启动它们。

如何将TaskList计数保存到变量中?目前,以下命令:

代码语言:javascript
复制
TaskList | FIND /C "Ulti.exe"

如果输入到cmd.exe中,就会准确地返回"Ulti.exe“进程的数量。我如何将它合并到一个.bat文件中,以便我可以将这个数字用作一个变量?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-02 13:25:32

使用for /f循环获取命令的输出:

代码语言:javascript
复制
for /f %%a in ('TaskList ^| FIND /I /C "Ulti.exe"') do set count=%%a
echo %count%
票数 1
EN

Stack Overflow用户

发布于 2018-11-02 16:30:12

在计数时,您可以收集PID以便于在需要时杀死它们。

代码语言:javascript
复制
:: Q:\Test\2018\11\02\SO_53115422.cmd
@Echo off & SetLocal EnableExtensions EnableDelayedExpansion

Set "Prog=Ulti.exe"
::Set "Prog=firefox.exe"

Set "Count="
Set "PIDs="

for /f "tokens=2" %%A in (
    'TaskList /FI "IMAGENAME eq %Prog%" ^| Findstr /i "%Prog%"'
) do (
    Set /A Count+=1
    Set PIDs=!PIDs! /PID %%A
)

If defined Count (
    If !Count! lss 3 (
         echo taskkill %PIDs%
         echo restart %Prog%
    ) else (
        echo %Prog% running %Count% times [%PIDs%]
    )
) else (
    Echo %Prog% not running
    Echo start %Prog%
)

样本输出:

代码语言:javascript
复制
> SO_53115422
Ulti.exe running 5 times [ /PID 3664 /PID 10332 /PID 3544 /PID 8996 /PID 11192]

> SO_53115422
Ulti.exe not running
start Ulti.exe

> SO_53115422
taskkill  /PID 8056 /PID 2704
restart Ulti.exe

只有在测试时才会回显taskkill命令。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53115422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档