如何在批处理文件中使用任务列表命令并将结果用作变量。例如,如果 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
)