批次:检查进程是否处于活动状态

问题描述

这似乎是一个愚蠢的问题,但我无法以某种方式解决。 我希望我的批处理文件检查特定进程是否正在运行。我使用了此页面上的示例,有时它可以正常工作:

@echo off
tasklist /FI "IMAGENAME eq My Auto Updater.exe" 2>NUL | find /I /N "My Auto Updater.exe" >NUL
if "%ERRORLEVEL%"=="0" echo Program is running
PAUSE

这按预期工作,并告诉我“ My Auto Updater.exe”是否正在运行。 但是,我注意到,这个完全相同的代码对其他Exe文件不起作用,这是一个随机示例,无法检测到该进程是否正在运行:

@echo off
tasklist /FI "IMAGENAME eq Office 15 Click-to-Run Localization Component.exe" 2>NUL | find /I /N "Office 15 Click-to-Run Localization Component.exe" >NUL
if "%ERRORLEVEL%"=="0" echo Program is running
PAUSE

我无法通过示例“ Office 15即点即用本地化Component.exe”来弄清楚为什么这样做失败。可能与exe名称中的数字有关吗? 我感谢每个答案!

解决方法

基本上,您的发现是在您从任务列表中插入的文档中专门寻找“ office 15 click-to-run localization component.exe”,但是任务列表将流程的名称缩短了。因为发现的确如此,所以找不到您想要的东西。

将/ fo csv添加到您的tasklist命令中,它将返回更长的名称,然后通过管道将发现内容找到它。

tasklist /FO csv /FI "IMAGENAME eq Office 15 Click-to-Run Localization Component.exe" 2>NUL | find /I /N "Office 15 Click-to-Run Localization Component.exe" >NUL
if "%ERRORLEVEL%"=="0" echo Program is running
PAUSE