批处理:检查进程是否处于活动状态不起作用

Batch: Checking if process is active not working

这感觉像是一个愚蠢的问题,但我无法以某种方式解决它。 我希望我的批处理文件检查特定进程是否为 运行。我使用了此页面中的一个示例,它有时会起作用:

@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

这按预期工作并告诉我“我的汽车 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 Click-to-运行 Localization Component.exe”失败的原因。它可能与 exe 名称中的数字有关吗? 我感谢每一个答案!

本质上,您的查找是在您从任务列表输入的文档中专门查找“office 15 click-to-run 本地化 component.exe”,但任务列表缩短了进程的名称。由于查找非常准确,因此找不到您要查找的内容。

将 /fo csv 添加到您的任务列表命令中,它将 return 更长的名称,然后 find 将在输入时找到它。

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