使用任务列表值作为变量

使用任务列表值作为变量

如何在批处理文件中使用任务列表命令并将结果用作变量。例如,如果 chrome.exe 已打开,则将其关闭

这是我的实验;

@echo off
for /f "tokens=*" %%a in ('tasklist') do (
)
if "%%a"=="chrome.exe" (taskkill /f /im chrome.exe)
exit

请帮助但无法成功

答案1

您应该从打开的 cmd 窗口开始逐步开发批处理。

C:\> tasklist /FI "IMAGENAME eq chrome.exe"

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
chrome.exe                   21416 Console                    1    125.716 K
chrome.exe                   20268 Console                    1      6.920 K
...

要处理此示例输出,for /f您必须首先
通过使用 findstr 或 if 进行过滤来消除不相关的行。

C:\> tasklist /FI "IMAGENAME eq chrome.exe" | findstr /ic:"chrome.exe"
chrome.exe                   21416 Console                    1    121.224 K
chrome.exe                   20268 Console                    1      6.920 K

for /f默认使用空格/制表符作为分隔符,并且仅使用 token=1。
因为我们需要的是 PID,也就是第二个 token:

for /f "tokens=2" %%a in ('
    tasklist /FI "IMAGENAME eq chrome.exe" ^| findstr /ic:"chrome.exe"
') Do echo %%a

返回您所追求的条形 PID 号码。

21416
20268

只是不回显而是用来taskkill /PID %%a删除所有 chrome.exe 进程。

if 变体:

for /f "tokens=1,2" %%a in ('tasklist /FI "IMAGENAME eq chrome.exe"') Do (
    if /i "%%a"=="chrome.exe" taskkill /PID %%b
)

相关内容